Distutils2 tutorial

Welcome to the Distutils2 tutorial ! We will learn here how to use Distutils2 to package your project.

Installing Distutils2

Quite simple, my dear reader:

$ pip install Distutils2

Or.. grab it at PyPI and run:

$ python setup.py install

Getting started

Distutils2 works with the setup.cfg file. It contains all the metadata for your project, as defined in PEP 345, but also declare what your project contains.

Let’s say you have a project called CLVault containing one package called clvault, and a few scripts inside. You can use the mkcfg script to create a setup.cfg file for the project. The script will ask you a few questions:

$ mkdir CLVault
$ cd CLVault
$ python -m distutils2.mkcfg
Project name [CLVault]:
Current version number: 0.1
Package description:
>Command-line utility to store and retrieve passwords
Author name: Tarek Ziade
Author e-mail address: tarek@ziade.org
Project Home Page: http://bitbucket.org/tarek/clvault
Do you want to add a package ? (y/n): y
Package name: clvault
Do you want to add a package ? (y/n): n
Do you want to set Trove classifiers? (y/n): y
Please select the project status:

1 - Planning
2 - Pre-Alpha
3 - Alpha
4 - Beta
5 - Production/Stable
6 - Mature
7 - Inactive

Status: 3
What license do you use: GPL
Matching licenses:

1) License :: OSI Approved :: GNU General Public License (GPL)
2) License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)

Type the number of the license you wish to use or ? to try again:: 1
Do you want to set other trove identifiers (y/n) [n]: n
Wrote "setup.cfg".

A setup.cfg file is created, containing the metadata of your project and the list of the packages it contains:

$ more setup.cfg
[metadata]
name = CLVault
version = 0.1
author = Tarek Ziade
author_email = tarek@ziade.org
description = Command-line utility to store and retrieve passwords
home_page = http://bitbucket.org/tarek/clvault

classifier = Development Status :: 3 - Alpha
    License :: OSI Approved :: GNU General Public License (GPL)

[files]

packages = clvault

Our project will depend on the keyring project. Let’s add it in the [metadata] section:

[metadata]
...
requires_dist =
        keyring

Running commands

You can run useful commands on your project once the setup.cfg file is ready:

  • sdist: creates a source distribution
  • register: register your project to PyPI
  • upload: upload the distribution to PyPI
  • install: install it

All commands are run using the run script:

$ python -m distutils2.run install
$ python -m distutils2.run sdist
$ python -m distutils2.run upload

If you want to push a source distribution of your project at PyPI, do:

$ python -m distutils2.run sdist register upload

Installing the project

People will have to manually run the distutils2 install command:

$ python -m distutils2.run install

Table Of Contents

Previous topic

The setup.cfg file

Next topic

Distributing Python Projects

This Page