At 12:39 PM 12/9/2005 -0800, Bob Ippolito wrote:
I started refactoring py2app, modulegraph, etc. for setuptools and eggs. After doing dependency resolution via modulegraph, py2app needs to know which of those dependencies are in eggs and where those eggs are so that it can just throw the egg (and its dependencies) into the application bundle instead of doing the normal py2app thing.
Is there an API to map __file__ paths to eggs? It seems possible for zip and directory eggs by walking up os.path.dirname(__file__) and using find_distributions, but that doesn't seem to work for "setup.py develop" eggs.
You would probably have an easier time if you go the other way, by walking a WorkingSet and querying the eggs to see if they contain the modules you're looking for, rather than the other way around. You could use either the default working_set (based on current sys.path), or you could create a new WorkingSet instance based on a hypothetical sys.path, whatever makes sense for your tool. System packages (which put multiple eggs in the same directory) are a tougher problem, though, unless they grow an additional manifest file to list all their modules, not just top-level ones. (Though that really only becomes an issue with namespace packages, and of course system packages of eggs are still just a possibility rather than a reality.)