
On Fri, Jan 20, 2006 at 12:35:56PM -0500, Phillip J. Eby wrote:
At 06:25 PM 01/19/2006 -0500, Chris Lambacher wrote:
Hi,
I have several apps that I distribute to customers using py2exe. I have also written modules which these apps share. Up to now I have not had any modules written in C so to build my py2exe apps I just set the PYTHONPATH environment variable to point to the module's location in CVS and run setup.py py2exe. This is convenient because release builds are done via Buildbot on a dedicated computer. All buildbot has to do is check out the source and run setup.py.
I now have my first C module and have been trying to work out how to deal with building the module. I would prefer to build the module and 'release' it for use with my two apps.
What I would like to do is build up an egg for the library and copy it to a known location. Then have the apps use the setuptools require_install directive to allow me to get the egg and 'install' it into the build directory somewhere and then let the rest of the py2exe magic work.
I think I know where to add my call into setuptools from py2exe, but I cannot figure out what setup_tools function to call in order to do the 'installation'.
Run "setup.py develop" in the source tree of each project, starting with the dependencies and working your way up to the main application. Then run py2exe.
See also the py2exe Wiki, which has a page of tips for using py2exe with eggs. However, if you have source checkouts for all the things your application includes, you don't need to worry about unzipping eggs. This is almost what I want, but I want to release my modules and have my app builds pick them up as eggs.
When I build my module eggs, I publish them to a directory that an http server indexes. I then I have a build script that calls 'easy_install -m -Z -d tmpdir -f http://myserver/eggs module' for each module that I am interested in. Then I add all the new directories in tmpdir to my python path and call setup.py py2exe. The advantage of this is that each time I build I could potentially be using a different version of the module. I don't have to worry about not getting updates to that libarary because I am building a point release of my app on some strange branch. I wanted to make this action triggered by install_requires in the py2exe command, I am instead doing this externally before the py2exe command.
Note that this will *not* include egg metadata in your .exe build, so if you are using packages that require such metadata, they may not work correctly when embedded.
Not a problem for me, I am not that sofisticated yet :) Thanks for the help, Chris