[Distutils] modules in sub-packages

P.J. Eby pje at telecommunity.com
Wed Apr 7 19:55:00 CEST 2010


At 11:00 PM 4/7/2010 +0530, Amit Sethi wrote:
>I am trying to create  a module for the docutils . I wish to install
>it docutils.writer.something

Is that a documented, official way to extend docutils?  If not, and 
docutils.writer is not a namespace package, then you should not be doing that.


>I have docutils installed at
>/usr/local/lib/python2.6/dist-packages/docutils-0.6-py2.6.egg
>on my ubuntu machine but when I tried to install it create a seperate
>package called docutils and saves
>the package in that ? How do I tell a package that this particular
>package is a subpackage of a library
>the setup.py of the package looks like :
>  license='Public Domain',
>  packages=['docutils.writers'],
>  package_dir={'docutils.writers':'docbook'},
>  scripts=['rst2docbook.py']

The correct way to do this is to NOT list packages or package_dir; 
just use py_modules = 'docutils.writer.docbook', and have a 
docutils/writer/docbook.py file.  This will install it in a 
distutils-compatible way, but not a distribute-compatible or 
setuptools-compatible way.

Really, this is not a well-supported scenario in any case -- it is to 
be avoided if at all possible.  Installing your code into other 
people's packages is a bad way to extend them.  (Setuptools and 
Distribute offer better ways of providing extensibility, such as 
namespace packages and entry points.)




More information about the Distutils-SIG mailing list