From: Brian D. <bri...@gm...> - 2005-09-06 19:33:42
|
Thomas,=20 Thank you very much for implementing the bundling features in py2exe! While I still intend to distribute full directories for the main applications we have at work, the ability to create a singlefile exe for small utilties will be very useful when creating small tools and allowing other people to easily run them. I've created a small sample application, set bundle_files to 1 and everything seems to work perfectly on my machine. As I expected, if I copy the exe to a fresh install of WinXP, it fails in the usual way: "This application has failed to start because MSVCR71.dll was not found. Re-installing the application may fix this problem." And, if I copy MSVCR71.dll into the application directory, it works fine.= =20 But, wouldn't it be nice if I could include MSVCR71.dll as well? (since I've got a VS licence) So, just to test, I added a line to build_exe.py py2exe._run after the dlls are found: dlls.add('msvcr71.dll') The resulting exe is larger, and 'MSVCRT71.dll' appears in the file when I edit with a text editor, however the test application still fails on the bare WinXP install, so I expect that the MSVCR71.dll needs to be handled in a special way? Take care, -Brian |
From: Alexander B. <bi...@uk...> - 2005-09-07 09:21:32
|
> The resulting exe is larger, and 'MSVCRT71.dll' appears in the file > when I edit with a text editor, however the test application still > fails on the bare WinXP install, so I expect that the MSVCR71.dll > needs to be handled in a special way? > It's because this dll needs for python24.dll, so this library must be placed in one dir with python24.dll. |
From: Thomas H. <th...@py...> - 2005-09-07 09:45:28
|
Brian Dorsey <bri...@gm...> writes: > Thomas, > > Thank you very much for implementing the bundling features in py2exe! > While I still intend to distribute full directories for the main > applications we have at work, the ability to create a singlefile exe > for small utilties will be very useful when creating small tools and > allowing other people to easily run them. > > I've created a small sample application, set bundle_files to 1 and > everything seems to work perfectly on my machine. > > As I expected, if I copy the exe to a fresh install of WinXP, it fails > in the usual way: > "This application has failed to start because MSVCR71.dll was not > found. Re-installing the application may fix this problem." > > And, if I copy MSVCR71.dll into the application directory, it works fine. Ok, I've changed CVS so that py2exe copies the MSVCR71.dll into the dist directory. So, even with bundle_files = 1 and zipfile = None you end up with 2 files when you use Python 2.4 (if you delete the w9xpopen.exe that py2exe copied but which is normally not needed): myapp.exe and msvcr71.dll. Bundling msvcr71.dll into the exe would be somewhat tricky, because the run-stub that myapp.exe uses even needs this dll, so the app won't start unless the dll is in the file system. I'm unsure whether this can be fixed or not. > But, wouldn't it be nice if I could include MSVCR71.dll as well? > (since I've got a VS licence) So, just to test, I added a line to > build_exe.py py2exe._run after the dlls are found: > dlls.add('msvcr71.dll') > > The resulting exe is larger, and 'MSVCRT71.dll' appears in the file > when I edit with a text editor, however the test application still > fails on the bare WinXP install, so I expect that the MSVCR71.dll > needs to be handled in a special way? Even pythonXY.dll (and zlib.pyd, if you create a compressed zip.archive) must be, and are, handled specially - they cannot be loaded from the zip. Thomas |
From: Brian D. <bri...@gm...> - 2005-09-07 16:36:25
|
On 07/09/05, Thomas Heller <th...@py...> wrote: > > And, if I copy MSVCR71.dll into the application directory, it works fin= e. >=20 > Ok, I've changed CVS so that py2exe copies the MSVCR71.dll into the dist > directory. So, even with bundle_files =3D 1 and zipfile =3D None you end= up > with 2 files when you use Python 2.4 (if you delete the w9xpopen.exe > that py2exe copied but which is normally not needed): myapp.exe and > msvcr71.dll. This seems like a good idea to me, hopefully it will reduce the general confusion around MSVCR71.dll. > Bundling msvcr71.dll into the exe would be somewhat tricky, because the > run-stub that myapp.exe uses even needs this dll, so the app won't start > unless the dll is in the file system. >=20 > I'm unsure whether this can be fixed or not. Understood. Thank you very much for looking into this. For small utilities, two files is still much better than a directory. I suppose that the only way around that dependecy for the run-stub would be to use a different compiler to create it, possibly introducing other problems? (Pardon my ignorance, if that's incorrect. ;) Thanks again,=20 -Brian |
From: David N. <dav...@ho...> - 2005-09-08 14:18:52
|
Hi, With this new build I'm excited about the possibility or a single .exe binary, I've had a few problems getting there though. "import urllib, urllib2" gave an ImportError on urllib until I put them on separate lines. Has anyone successfully packaged a COM Python script under this version? Using this version I am getting pythoncom NameErrors on systems without the win32com module installed for Python. David |
From: Thomas H. <th...@py...> - 2005-09-09 16:05:08
|
David Nicolson <dav...@ho...> writes: > Hi, > > With this new build I'm excited about the possibility or a single > .exe binary, I've had a few problems getting there though. > > "import urllib, urllib2" gave an ImportError on urllib until I put > them on separate lines. I cannot reproduce this. Are you sure this isn't a spurious error, maybe you should delete the build and dist directory before building again. > Has anyone successfully packaged a COM Python script under this > version? Using this version I am getting pythoncom NameErrors on > systems without the win32com module installed for Python. Please provide a simple test case for that. py2exe successfully (for me, at least), builds a sample using the wmi module. Thomas |