packaging has landed in the standard library, but the road to Python 3.3 is still filled with a lot of work. We've pushed the Documentation yesterday in the tip, and it now appears here: http://docs.python.org/dev/packaging/
There are a lot of stuff you can do to help us improving packaging. If you wish to help out, read up.
1. Install a Python 3 development environment
The first step is to install a Python development environment
There's a full dev guide here: http://docs.python.org/devguide/ but
it basically boils down to run make on the tip:
$ hg clone https://hg.python.org/cpython (very long)
$ cd cpython $ ./configure && make
Once this is done, you'll have a Python interpreter you can run:
Python 3.3a0 (default:94066c3e2236+, May 31 2011, 08:29:53) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print('Python 3, yay !') Python 3, yay !
2. Try out the pysetup script, as an end-user
This script is a global script people will be able to use to check what's installed on a Python installation, to install things, remove them, etc. The script has still a lot of rough edges, which is a shame since it's just the tip of a feature-rich system.
It's located in Tools/script/pysetup3 in a dev environment, and here's
a demonstration of how to install the lastest Mako release, check that
it's installed, look at some of its metadata, then remove it:
$ sudo ./python Tools/scripts/pysetup3 install Mako
Checking the installation location... Getting information about 'Mako'... Installing 'mako' 0.4.1... [lots of output] $ ./python Tools/scripts/pysetup3 list SQLAlchemy 0.7.0 at /usr/local/lib/python3.3/site-packages/SQLAlchemy-0.7.0-py3.3.dist-info distribute 0.6.17 at /usr/local/lib/python3.3/site-packages/distribute-0.6.17-py3.3.dist-info Mako 0.4.1 at /usr/local/lib/python3.3/site-packages/Mako-0.4.1-py3.3.dist-info Found 3 projects installed. $ ./python Tools/scripts/pysetup3 metadata Mako -f Version Version: 0.4.1 $ ./python Tools/scripts/pysetup3 metadata Mako -f Author Author: Mike Bayer $ sudo ./python Tools/scripts/pysetup3 remove Mako Removing 'Mako': /usr/local/lib/python3.3/site-packages/mako/parsetree.py [lots of lines] /usr/local/lib/python3.3/site-packages/Mako-0.4.1-py3.3.dist-info/RECORD Proceed (y/n)? y Success: removed 52 files and 2 dirs
So go ahead, play with this script, discover its features and:
- tell us what feels wrong - tell us what kind of features you wish you had in this script - found a bug, have a patch, tell us !
3. Make your project packaging-ready, as a developer
The sweet thing is that adding packaging support in your project is risk-free because it's just adding a few sections in your setup.cfg file. setup.py can stick around, and older installers will still pick it up.
So, here is how you can do: You can tollow the tutorial if you want to do something from scratch:http://docs.python.org/dev/packaging/tutorial.html
Or you can use the magic create command in your Project root directory,
to create a setup,cfg out of your setup.py file !
$ sudo ./python Tools/scripts/pysetup3 create
A legacy setup.py has been found. Would you like to convert it to a setup.cfg? (y/n) [y]: y Wrote "setup.cfg".
If you're starting your project from scratch You can also generate a
setup.py that will extract the options out of setup.cfg. Very handy to
provide backward compatibility and avoid maintaining two files !
$ sudo ./python Tools/scripts/pysetup3 generate-setup
The setup.py was generated
So go ahead, learn how setup,cfg works, reads its specs at
- tell us what feels wrong - tell us what kind of features you wish you had in this file - found a bug, have a patch, tell us ! - tell us if you were unable to convert your project
Once the project is packaging ready, you can even register and upload a new version of it at PyPI and check that pysetup knows how to install it
4. Give use some feedback
- You can add new bugs/feature requests athttp://bugs.python.org/ under the Distutils2 component, that will be really really helpful.
- You can tell us what's weird with our documentation, what misses, etc. That goes to the Documentation+Distutils2 components