Tina I wrote:
Hi list,
Is there a preferred way to distribute programs that depends on third
party modules like PyQt, Beautifulsoup etc? I have used setuptools and
just having the setup script check for the existence of the required
modules. If they're not found I have it exit with a message that it need
this or that installed.
But this is not very convenient for the end user and I have got a few
complaints about it. Am I missing something in setuptools or is there a
better way to do it (except for bundling the modules in the package
which seem like a rather nasty workaround)?
Thanks
Tina
What platform are you doing this on? On the Linux platform, "dependency
hell" of this sort is pretty much unavoidable, because there are so many
different packaging systems (apt, rpm, and so on): it's standard to let
the package manager handle these dependencies. And yes, it is
frustrating for end users.
On Windows and the Mac, bundling all the modules isn't a "nasty
workaround"; it's the standard behavior. End users on those platforms
expect complete application packages, including all supporting
libraries, to be provided by the developers. The standard tools for
doing this are py2exe for Windows (
http://www.py2exe.org/) and py2app
for Mac (
http://svn.pythonmac.org/py2app/py2a...oc/index.html).
There are other methods for distributing "frozen binaries," including
the freeze module that ships with Python itself, cx_freeze, and
PyInstaller: these three may work on Linux/Unix as well as Windows (they
are not supported on the Mac). But the methods above are generally the
ones most widely used.
--
Kevin Walzer
Code by Kevin
http://www.codebykevin.com