<div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">[compiling...]<br><br>./myprog<br>Traceback (most recent call last):<br>&nbsp;&nbsp;File &quot;myprog.py
&quot;, line 27, in &lt;module&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;from PyQt4 import QtGui<br>ImportError: cannot import name QtGui</blockquote><div><br>You need to tell the Python interpreter you&#39;re building that the PyQt4.QtGui module is built-in so it does not look for it in the filesystem.&nbsp; To do that you need to call PyImport_ExtendInittab (which is part of the Python C API) with the appropriate parameters before the interpreter starts.
<br><br>You can achieve that by modifying the main function of the frozen program, which is in the frozen.c file that freeze.py generates.&nbsp; From the main function, you can call a function like this (derived from custom/custom.c from the sip source distribution):
<br><br>#include &lt;Python.h&gt;<br><br>void custom_inittab(void)<br>{<br>&nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp; &nbsp;* Declare the module initialisation function for each module you want<br>&nbsp;&nbsp;&nbsp; &nbsp;* to be a builtin in the custom interpreter.&nbsp; The name of the function
<br>&nbsp;&nbsp;&nbsp; &nbsp;* will be the name of the module with &quot;init&quot; prepended.&nbsp; The modules<br>&nbsp;&nbsp;&nbsp; &nbsp;* must be built as static libraries (using the -k flag to configure.py<br>&nbsp;&nbsp;&nbsp; &nbsp;* for SIP and PyQt).<br>&nbsp;&nbsp;&nbsp; &nbsp;*/<br><br>&nbsp;&nbsp;&nbsp; extern void initsip(void);
<br>&nbsp;&nbsp;&nbsp; extern void initQtCore(void);<br>&nbsp;&nbsp;&nbsp; extern void initQtGui(void);<br><br>&nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp; &nbsp;* This structure specifies the names and initialisation functions of<br>&nbsp;&nbsp;&nbsp; &nbsp;* the builtin modules.<br>&nbsp;&nbsp;&nbsp; &nbsp;*/<br>&nbsp;&nbsp;&nbsp; struct _inittab builtin_modules[] = {
<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&quot;sip&quot;, initsip},<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&quot;PyQt4.QtCore&quot;, initQtCore},<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&quot;PyQt4.QtGui&quot;, initQtGui},<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {NULL, NULL}<br>&nbsp;&nbsp;&nbsp; };<br><br>&nbsp;&nbsp;&nbsp; PyImport_ExtendInittab(builtin_modules);
<br>}<br><br></div>By the way, don&#39;t forget you need to link your program with the static sip and PyQt libraries; otherwise the linker will complain that the init* symbols above are unresolved.<br><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
&gt; As for the inclusion of this patch into the Python official release, the<br>&gt; patch needs to have this problem with the regression test configuration<br>&gt; fixed, and being reviewed.&nbsp;&nbsp;The difficult part is the latter as apparently
<br>&gt; barely anyone reviews Python patches and so the project has a considerable<br>&gt; patch backlog.</blockquote><blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote">
<br></blockquote><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">If we got it working it should be a good feature :)</blockquote><div><br>I agree, but at the moment I don&#39;t have access to a good Linux development machine so I haven&#39;t tried to fix 
Setup.dist.&nbsp; If you are comfortable with bash scripts you could give it a try yourself -- I think it shouldn&#39;t be too difficult.<br></div></div><br>Regards,<br>Miguel<br><br>