[Pythonmac-SIG] py2app: Packaging wxGlade
Bob Ippolito
bob at redivi.com
Fri Oct 8 00:47:46 CEST 2004
(Note: this information is relevant to `py2app`_ 0.1.2 - which is
currently just on the `svn trunk`_)
In order to see how hard it would be to package a complicated
application such as `wxGlade`_, I decided to give it a try. `wxGlade`_
is quite a dynamic beast with regard to code generation and widget
plugins, so it was a bit of a pain to deal with. I actually had to add
several features to `py2app`_ in the process:
* A feature where one module can be "aliased" to another module. I
needed this because wxPython.wx points to wx, but is not actually on
the filesystem.
* An extensible module filtering system, so a recipe can say "yes" or
"no" to any extension or python module it comes across. Before this,
there was only one static filter that would say "no" to standard
library modules when using a vendor Python.
`wxGlade`_ causes problems because it needs to list the "codegen" and
"widgets" directories, and load code from them. This would be easy if:
* The path were configurable in some way (using sys.path, a separate
variable, etc.). Packages go into .../Python/site-packages/, where it
expected to see them at .../
* The list of modules were configurable in some way (right now it
expects to perform an os.listdir)
The naive way would be to just include them as data files, however this
prevents dependency analysis from occurring. It turns out that
`wxGlade`_ did indeed cause new dependencies in these modules so a more
complicated solution was required. The solution to this particular
problem is in three parts:
1. Add "codegen" and "widgets" as data files
2. Add a wxglade recipe that scans all of these plugins for dependencies
3. Have the wxglade recipe install a filter that makes sure these
dependencies aren't copied into the normal place
The other customization I used was a custom boot script, wxGlade.py.
This boot script does two things:
1. Starts up wxGlade as per wxglade.py, but in a simpler way (less is
needed, the environment is already sane)
2. Monkeypatches a bug in `wxGlade`_ so that it can open the help files
The example setup.py and bootstrap wxGlade.py are located at:
http://undefined.org/python/wxGlade-0.3.4-py2app.tgz
Note that setup.py expects a `wxGlade 0.3.4`_ distribution to be
unpacked in ./wxGlade-0.3.4
.. _`py2app`: http://undefined.org/python/#py2app
.. _`svn trunk`: http://svn.red-bean.com/bob/py2app/trunk
.. _`wxGlade`: http://wxglade.sourceforge.net/
.. _`wxGlade 0.3.4`:
http://sourceforge.net/project/showfiles.php?
group_id=58225&package_id=54072&release_id=264401
-bob
More information about the Pythonmac-SIG
mailing list