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: firstname.lastname@example.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 = email@example.com 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