Eggs for Christmas
Robin Dunn
robin at alldunn.com
Mon Dec 24 12:37:22 PST 2007
Hi all,
A while back
(http://lists.wxwidgets.org/cgi-bin/ezmlm-cgi?12:mss:3637:200711:dambhhlnhfalnegfpkdm)
we discussed reorganizing the wxPython packages for Mac and Windows such
that there is a runtime-only package, and a package with the runtime and
everything else that a developer would want to have (the docs, demos and
such.) While I was letting that idea stew a bit I realized that Python
Eggs would be an ideal way to provide the runtime portion of this idea,
and over the last couple weeks I have been learning about eggs and
playing with tweaks to setup.py to make a wxPython egg. You can see the
results at http://alldunn.com/wxPython/stuff/. To use it just download
the egg and then install it with easy_install.
There are still a few known problems which I'll describe below, but
first, a few choices I made going into the task:
* Only the wx package will be included, not the wxPython package.
* The wxversion module will not work with the egg, but you can use the
pkg_resources module to do the same thing if you have more than one
version of the wxPython egg installed.
* One of the main ideas behind using an egg is that it is self
contained. To me that means the the wxWidgets shared libraries should
be included too. On Windows that is easy and I include the DLLs the
same way that they are now, in the same dir as the wxPython .pyd files.
On Mac I've copied the wx .dylibs into the egg in a Library dir, and
I've modified the extension modules to be able to find those libraries
using a @loader_path/../Library path name. This lets the egg be located
anywhere and still be able to find its own wx shared libs. For Mac this
is especially helpful because it allows the egg to be used with either
the system python or a user installed MacPython. You can also install
the egg into your $HOME/Library/Python/2.5/site-packages directory and
use the one egg from both Pythons.
Known Problems:
* The message catalog files are not included yet. Not a big deal, I
just haven't done it yet.
* On Windows being self-contained means that a few things we usually
install outside of the package dir are missing, mainly the .manifest
files for python.exe and pythonw.exe. If easy_install supported some
sort of post-install script then I could easily take care of it there,
but it doesn't look like it does. :-( Does anybody have any ideas about
how to work around this?
* On Windows easy_install creates a stub .exe loader for the "entry
points" it installs to the Scripts dir. Those that I've marked as gui
scripts (pycrust, xrced, etc.) are not working for some reason. They
just exit without launching the application. I think it's a bug in the
launcher exe provided by setuptools, but I haven't dug into it yet.
Since these launchers are created during the install phase it will
likely take a new version of setuptools to be able to fix it.
Anyway, please give these eggs a try and let me know how it goes. If
you have ideas to help with the above problems, or if you have any other
suggestions please speak up.
Merry Christmas!
--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!
More information about the wxpython-dev
mailing list