dh_pycentral - use the python-central framework to handle Python modules and extensions


dh_pycentral [debhelper options] [-n] [-Xitem] [-V version] [module dirs ...]


dh_pycentral is a debhelper program that will scan your package, detect public Python modules and move them in /usr/share/pycentral so that python-central can byte-compile those for all supported Python versions. Extensions are kept into the original installation location.

Moving the files to the pycentral location can be disabled by setting the environment varibale DH_PYCENTRAL to a string containing the string nomove.

To shorten the time of unavailabilty of files during unpack and configure, dh_pycentral does the symlinking in the preinst and does not remove the symlinked files on upgrade. This can be disabled by setting the environment varibale DH_PYCENTRAL to a string containing the string noprepare. If the newer version of a package needs to remove the symlinked files on upgrade, either the package needs to take care of the removal by calling pycentrel pkgremove in the new preinst, or leaving a file /var/lib/pycentral/<package>.pkgremove and using pycentral 0.6.7 or later for the old package version.

You must have filled the XS-Python-Version header to indicate the set of python versions that are going to be supported. dh_pycentral expects the XB-Python-Version for each binary package it is supposed to work on.

dh_pycentral will also generate substitution variables: the ${python:Provides} variable will contain versioned provides of the package (if the package's name starts with "python-"). A python-foo package could provide "python2.3-foo" and "python2.4-foo" at the same time. Python extensions have to provide those whereas it's only option for pure python modules.

The ${python:Versions} variable should be used to provide the required XB-Python-Version field listing the python versions supported by the package.


module dirs

If your package installs python modules in non-standard directories, you can make dh_pycentral check those directories by passing their names on the command line. By default, it will check /usr/lib/$PACKAGE, /usr/share/$PACKAGE, /usr/lib/games/$PACKAGE, /usr/share/games/$PACKAGE and /usr/lib/python?.?/site-packages.

Note: only /usr/lib/python?.?/site-packages and the extra names on the command line are searched for binary (.so) modules.

-V version

If the .py files your package ships are meant to be used by a specific pythonX.Y version, you can use this option to specify the desired version, such as 2.3. Do not use if you ship modules in /usr/lib/site-python.

With the new policy, this option is mostly deprecated. Use the XS-Python-Field to indicate that you're using a specific python version.

-n, --noscripts
Do not modify postinst/postrm scripts.
-Xitem, --exclude=item
Exclude files that contain "item" anywhere in their filename from being taken into account to generate the python dependency. You may use this option multiple times to build up a list of things to exclude.


Python policy, version 0.4.1 (2006-06-20)



This program is a part of python-central but is made to work with debhelper.


Raphael Hertzog <>

Also includes bits of the old dh_python written by Josselin Mouette <> who used many ideas from Brendan O'Dea <>.