Let's say you've got some libraries installed as eggs. If you run py2app or py2exe on the application, it seems like you'd want the egg (or at least it's contents) to come along with the application. Or, at least, I'd prefer it for the eggs to come along with the app, rather than being downloaded via require. (For curiousity's sake, I just tried it and found that the contents of the eggs were left behind when I ran py2app. Not at all surprising, given that I don't think py2app or py2exe know about eggs yet...) Anyone have opinions on how a standalone app should look with eggs? Kevin
At 10:30 AM 7/6/2005 -0400, Kevin Dangoor wrote:
Let's say you've got some libraries installed as eggs. If you run py2app or py2exe on the application, it seems like you'd want the egg (or at least it's contents) to come along with the application. Or, at least, I'd prefer it for the eggs to come along with the app, rather than being downloaded via require.
(For curiousity's sake, I just tried it and found that the contents of the eggs were left behind when I ran py2app. Not at all surprising, given that I don't think py2app or py2exe know about eggs yet...)
Anyone have opinions on how a standalone app should look with eggs?
The egg runtime is designed to allow "baskets" - zip files containing multiple eggs - in order to support py2exe and similar scenarios. Let's say you have two dependencies: foo 1.2 and bar 3.4. Your py2exe-generated zipfile contents should look like this: some_main_module.py some_stdlibmodule.py ...etc. foo-1.2-py2.4-win32.egg/ EGG-INFO/ PKG-INFO some_foo_module.py ...etc. bar-3.4-py2.4-win32.egg/ EGG-INFO/ PKG-INFO some_bar_module.py ...etc. In other words, you can zip up a bunch of directory eggs into a single zipfile, and the runtime will treat them as separate eggs. Of course, 'pkg_resources.py' needs to be among the modules placed directly in the zipfile, or else it won't be findable. Another alternative that's possible is to just include all the modules and packages directly, copying EGG-INFO dirs to ProjectName.egg-info dirs. This makes the packages discoverable with all their metadata, but doesn't provide any flexibility of activation. However, for a py2exe/py2app scenario, you probably don't need that flexibility for anything you're hardwiring into the executable anyway. The metadata is more useful on the build side, in that tools like py2exe and py2app could use setuptools' dependency info to assemble the application from the designated eggs, rather than trying to sniff out all the dependencies by introspection.
On 7/6/05, Phillip J. Eby <pje@telecommunity.com> wrote:
The egg runtime is designed to allow "baskets" - zip files containing multiple eggs - in order to support py2exe and similar scenarios.
Aha. That is handy. Given how easy eggs are to work with, I'm certain that I'll be able to get them working with the existing py2app/py2exe, even if the process is a bit more manual. It seems like I just need to be sure that pkg_resources makes it in to the app, and that the eggs all end up in one of the spots that are naturally added to sys.path by the py2app/py2exe runtimes. Thanks for the tips! Kevin
participants (2)
-
Kevin Dangoor
-
Phillip J. Eby