#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jun 2004
    Posts
    28
    Rep Power
    0

    Question Understanding Distutils


    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):
    code
    code/code_file1.py
    code/code_file2.py
    data
    data/datafile2.txt
    data/datafile2.txt

    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"
  2. #2
  3. Mini me.
    Devshed Novice (500 - 999 posts)

    Join Date
    Nov 2003
    Location
    Cambridge, UK
    Posts
    783
    Rep Power
    14
    You need two files in addition to your source code:
    setup.py
    and
    MANIFEST

    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.

    SETUP.PY
    Code:
    from distutils.core import setup
    import ptypes
    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
    """
    
    setup(name="ptypes",
          version = ptypes.__version__,
          maintainer = "Paul Hardwick",
          maintainer_email = "paul@peck.org.uk",
          url = "http://www.peck.org.uk/p/python",
          platforms = ["any"],
          description = sum[0],
          classifiers = filter(None, classifiers.split("\n")),
          long_description = doc,
          license = "GNU GPL",
          py_modules = []
          )
    MANIFEST
    Code:
    README.txt
    ptypes.py
    setup.py
    You should be able to modify that to your needs.

    grim
  4. #3
  5. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jun 2004
    Posts
    28
    Rep Power
    0
    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?
  6. #4
  7. Mini me.
    Devshed Novice (500 - 999 posts)

    Join Date
    Nov 2003
    Location
    Cambridge, UK
    Posts
    783
    Rep Power
    14
    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).

    grim
  8. #5
  9. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Jun 2004
    Posts
    28
    Rep Power
    0
    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.

IMN logo majestic logo threadwatch logo seochat tools logo