[Pythonmac-SIG] Building an extensible bundle with py2app

Ronald Oussoren ronaldoussoren at mac.com
Wed Oct 17 16:45:24 CEST 2012


On 17 Oct, 2012, at 16:12, Emanuele Santos <emanuelesantos at gmail.com> wrote:

> Hi, all
> 
> We build a bundle with py2app and we would like to make it extensible so users could install on demand other python packages into the python framework included in the bundle, for example by running easy_install.
> 
> Is there a recommended way of doing that? I noticed that the site.py file included in the bundle is not complete so when I tried using the --user command line option or setting the $PYTHONHOME, I got an error.

I wouldn't change the application bundle itself, but would add an option to load python code from a user specified location. There are two reasons for not changing the application bundle itself: that would invalidate code signatures, and users cannot necessarily write into the bundle (I tend to install applications using a separate account with more privileges than my normal account).

One way to do this is adding something like this to your application's startup code:

    import os
    import site

    site.addsitedir(os.path.expanduser("~/Library/Application Support/MyApp/Python"))

Users can then install additional modules in "~/Library/Application Support/MyApp/Python" and your application can then use them.

If you're using a semi-standalone build (for example because you use Apple's python build) you can also use the "--site-packages" option to add the default site-packages directory to your application's search path. However, when I look at the code that not only just works for semi-standalone builds, but I'm also also not sure if the code that adds ~/Library/Python/... to sys.path actually works.

Ronald
> 
> Thanks,
> 
> -- Emanuele.
> 
> _______________________________________________
> Pythonmac-SIG maillist  -  Pythonmac-SIG at python.org
> http://mail.python.org/mailman/listinfo/pythonmac-sig
> unsubscribe: http://mail.python.org/mailman/options/Pythonmac-SIG



More information about the Pythonmac-SIG mailing list