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!