Jiaaro
Jiaaro

Reputation: 76878

How to use Python distutils?

I wrote a quick program in python to add a gtk GUI to a cli program. I was wondering how I can create an installer using distutils. Since it's just a GUI frontend for a command line app it only works in *nix anyway so I'm not worried about it being cross platform.

my main goal is to create a .deb package for debian/ubuntu users, but I don't understand make/configure files. I've primarily been a web developer up until now.

edit: Does anyone know of a project that uses distutils so I could see it in action and, you know, actually try building it?

Here are a few useful links

Upvotes: 25

Views: 11383

Answers (5)

Stuart Cardall
Stuart Cardall

Reputation: 2447

apt-get install python-stdeb

Python to Debian source package conversion utility

This package provides some tools to produce Debian packages from Python packages via a new distutils command, sdist_dsc. Automatic defaults are provided for the Debian package, but many aspects of the resulting package can be customized via a configuration file.

  • pypi-install will query the Python Package Index (PyPI) for a package, download it, create a .deb from it, and then install the .deb.
  • py2dsc will convert a distutils-built source tarball into a Debian source package.

Upvotes: 6

Rusty Shackelford
Rusty Shackelford

Reputation: 81

I found the following tutorial to be very helpful. It's shorter than the distutils documentation and explains how to setup a typical project step by step.

Upvotes: 2

Jason Baker
Jason Baker

Reputation: 198517

distutils really isn't all that difficult once you get the hang of it. It's really just a matter of putting in some meta-information (program name, author, version, etc) and then selecting what files you want to include. For example, here's a sample distutils setup.py module from a decently complex python library:

Kamaelia setup.py

Note that this doesn't deal with any data files or or whatnot, so YMMV.

On another note, I agree that the distutils documentation is probably some of python's worst documentation. It is extremely inclusive in some areas, but neglects some really important information in others.

Upvotes: 1

Andrew Wilkinson
Andrew Wilkinson

Reputation: 10836

Most Python programs will use distutils. Django is a one - see http://code.djangoproject.com/svn/django/trunk/setup.py

You should also read the documentation, as it's very comprehensive and has some good examples.

Upvotes: 2

Sander
Sander

Reputation: 26344

See the distutils simple example. That's basically what it is like, except real install scripts usually contain a bit more information. I have not seen any that are fundamentally more complicated, though. In essence, you just give it a list of what needs to be installed. Sometimes you need to give it some mapping dicts since the source and installed trees might not be the same.

Here is a real-life (anonymized) example:

#!/usr/bin/python 

from distutils.core import setup 

setup (name = 'Initech Package 3', 
          description = "Services and libraries ABC, DEF", 
          author = "That Guy, Initech Ltd", 
          author_email = "[email protected]", 
          version = '1.0.5', 
          package_dir = {'Package3' : 'site-packages/Package3'}, 
          packages = ['Package3', 'Package3.Queries'], 
          data_files = [ 
                       ('/etc/Package3', ['etc/Package3/ExternalResources.conf']) 
          ])

Upvotes: 14

Related Questions