I have a default Python installation in c:\Python27. I have also installed Python through the OSGeo4W installer, which has created a "sandboxed" Python installation with all the geospatial bindings I need. Now, I need to package a script using py2exe, but I can't figure out how to install or configure py2exe to work with the OSGeo4W installation. I have configured OSGeo4W to install external packages with pip, but py2exe doesn't seem to install with pip. If I try to use the downloaded installer, it only finds the system install in the registry. Any ideas how to get it working?
I've had better luck with pyinstaller than py2exe. It pretty much works out of the box for me with o4w python (you may need to install the optional
python-win32 package). Follow the install instructions, and run the Build step. I didn't need to get into manually altering the spec file or even using options (other than
--onefile for end user simplicity). Just make sure you run from inside the o4w shell so pyinstaller finds the right python environment. Here is my pyinstaller build batch file. There is only one line that does the real work:
python pyinstaller.py --onefile --out=%path\to\distrib%\myexe-%rev% %path\to\my\file.py%
Not to say py2exe can't work, it's just been so long now I no longer remember where I ran into difficulties with it or what the possible solution routes were.
I was able to get py2exe to work using a suggestion from wildintellect on IRC. After installing py2exe on the system python, I checked the install log (
c:\Python27\py2exe-wininst.log) and copied the files into the o4w python installation (
c:\OSGeo4W\apps\python27\lib). Basically, that meant the following files and directories:
C:\Python27\Lib\site-packages\py2exe-0.6.9-py2.7.egg-info C:\Python27\Lib\site-packages\zipextimporter.py C:\Python27\Lib\site-packages\_memimporter.pyd C:\Python27\Lib\site-packages\py2exe
I also had to copy these DLLs into
C:\OSGeo4W\apps\python27\DLLs to get it to link properly (basically I searched the c:\windows directory and copied across whatever caused it to fail):
There may be reasons why this is a bad idea, but if you are set on using py2exe, then this seems to work.
one option would be to add the osgeo python to your windows registry: http://effbot.org/zone/python-register.htm
this site also contains information on how to remove it from the registry if you so desire.
I am pretty sure this will help you as long as you have admin rights to the registry.