Welcome to the Distutils2 tutorial ! We will learn here how to use Distutils2 to package your project.
Quite simple, my dear reader:
$ pip install Distutils2
Or.. grab it at PyPI and run:
$ python setup.py install
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
You can run useful commands on your project once the setup.cfg file is ready:
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
People will have to manually run the distutils2 install command:
$ python -m distutils2.run install