[Pythonmac-SIG] py2app, eggs and entry points

Ronald Oussoren ronaldoussoren at mac.com
Sat Mar 31 16:09:51 CEST 2007


On 29 Mar, 2007, at 14:47, Nathan R. Yergler wrote:

> I have an application that I'd like to package using py2app, but I'm
> getting a little stuck with things.  I *think* my problem is that my
> setup.py is fully setuptools-ized and my application script lives
> inside my package.  Here's the call I make to setup():
>
> setup(name='cclookup',
>       version='2.0',
>       url='http://wiki.creativecommons.org/CcLookup',
>       author='Nathan R. Yergler',
>       author_email='nathan at creativecommons.org',
>
>       packages = ['cclookup', 'tagger', 'eyeD3'],
>
>       setup_requires = setup_requirements,
>       install_requires = ['setuptools',
>                           'rdflib==2.3.3',
>                           'ccrdf>=0.6a4',
>                           'cctagutils>=0.5a1',
>                           'rdfadict',
>                          ],
>       include_package_data = True,
>       zip_safe = False,
>
>       entry_points = {
>         'console_scripts':['cclookup = cclookup:main'],
>       },
>       app=['cclookup/app.py'],
>       options={ "py2exe": {"packages": ["encodings", 'rdflib']},
>                 "py2app": {"argv_emulation": True,
>                            "iconfile": os.path.join('cclookup',
> 'resources', 'cc.icns')
>                            }
>                 },
>       )
>
> When I try to run this with py2app, it crashes into pdb complaining
> that it can't locate pkg_resources.  Running the super-simplified
> version of setup.py generated by py2applet builds correctly, but has
> the following problems:
>
> * dependencies aren't included (I'm not sure if py2app actually
> attempts to scan for them like py2exe or not, so this may not be
> py2app's fault in the least)

Py2app scans for import statements, but cannot look inside zipfiles  
at the moment.

> * app.py is included by itself, as opposed to as part of the package.

That's by design. Teaching py2app to do the same as setuptools does  
for console_script entrypoints shouldn't be too hard, but nobody has  
gotten around to doing this yet.

>
> I think that ideally I'd be able to specify my application as a
> gui_scripts entry point to setup(), and have it play nicely with the
> eggs specified in install_requires.  I saw the docs mentioned that a
> future version would use eggs (I think it was in reference to
> recipes), and I was wondering what the status of that effort is.

AFAIK nobody is working on that. You're problems are caused by lack  
of 'egg' support in py2app, the current version of py2app doesn't  
look at entry points or other setuptools specific data other than the  
requires lines.

I have a patch that teaches py2app to look inside zipfiles, I'll  
merge that when I have some time to do so. Full setuptools support  
should be possible as well, I haven't looked seriously at this yet  
though. Patches would be greatly appriciated :-)

Ronald



More information about the Pythonmac-SIG mailing list