June 14th, 2004, 02:42 AM
I'm trying to understand Distutils, but even after reading the documentation, searching the Internet, and playing around with it, I still don't understand how to use it. I think that if I could get an example setup for distutils, I could take it from there.
The following shows about what my setup looks like (simplified):
In addition, I'm calling the Python Imaging Library, (http://www.pythonware.com/products/pil/index.htm) so a way to bring that along would be useful. I call it with "import ImageTk"
June 14th, 2004, 09:14 PM
You need two files in addition to your source code:
setup.py is used to create the distributable package by the author and is also used by the enduser to install the package.
MANIFEST is a plain text file that just contains a list of files to include in the package (one file per line).
The author will then use the command;
python setup.py sdist
which creates a dist sub-directory. This directory contains a zip file with all the files specified in the MANIFEST,
it also contains the PKG-INFO file which helps describe the package (usually a module description) for repositories like Pypi.
The end user will then unzip the package and run
python setup.py install
which typically would install the package into the site-packages sub-directory.
As a very simple example here are my setup.py and MANIFEST files for my ptypes.py module. You probably don't need so much info defined in the setup file but the principle should be clear. I used information defined in the ptypes.py module to help self document the package but you don't have to do it that way.
from distutils.core import setup
doc = ptypes.__doc__
sum = doc.split("\n")
classifiers = """\
Development Status :: 4 - Beta
Intended Audience :: Developers
License :: Freely Distributable
Programming Language :: Python
Topic :: Software Development :: Libraries :: Python Modules
Operating System :: Microsoft :: Windows
Operating System :: Unix
version = ptypes.__version__,
maintainer = "Paul Hardwick",
maintainer_email = "email@example.com",
url = "http://www.peck.org.uk/p/python",
platforms = ["any"],
description = sum,
classifiers = filter(None, classifiers.split("\n")),
long_description = doc,
license = "GNU GPL",
py_modules = 
You should be able to modify that to your needs.
June 15th, 2004, 02:39 AM
Thanks. That takes care of most of it; however, I still would like a way to include the Python Imaging Library along with my program. Any pointers?
June 15th, 2004, 03:56 AM
PIL has it's own installer -
If you include the the PIL installer in the package you could easily write a batch file that first runs the PIL installer and then runs the setup.py script.
Alternativley when you think the program is stable you could convert the whole thing to a self-contained executable with something like py2exe (Windows) or cxFreeze (Linux).
June 15th, 2004, 10:39 AM
On second look, the PIL includes a portion in C, which would make it difficult to include it properly. Worse, the thing's larger than my actual program. I think I'll just include a download link.