[Distutils] Files under /etc and /usr/share

Phillip J. Eby pje at telecommunity.com
Sun Sep 18 17:49:39 CEST 2005

At 12:38 PM 9/18/2005 +0200, Vincenzo Di Massa wrote:
>Is it possible to install things into /etc using setuptools/easy_install? I
>think that this feature will be very appreciated.
>I know setup.py philosopy is to put everything inside eggs, but config files
>are a really special case!
>It would be nice beeing able to tell in setup.py what the config files/dirs
>are. The generated egg should install the config files on user request (using
>a gen_config script) or just when the neded are not config files on the

I think that this is very application-specific as to how it should be 
handled.  It's very easy to create a package that contains configuration 
files, with a function in __init__.py to install them, perhaps with some 
options or an interactive setup facility.  Listing the function in setup.py 
then allows a script wrapper to be created for setting up the data.

Using pkg_resources.resource_filename() with a directory resource will 
unpack an entire directory tree to a temporary location, or give you the 
location of files that are already unpacked, so you can then use shutil or 
other normal ways of copying files.

>Another idea is for heavy data. Consider for example moin_moin.
>Using easy-deb i managed to aotomatically pacakge it into an egg (which is
>contained into a deb-package). The problem here is that it installs the
>template files inside the egg. Since template files must be copied "somewere"
>it is bat to put them into the egg where they are hidden/zipped. Moreover it
>would be nice to make the eggs inside /usr/lib/python?.?/site-packages more
>lightweight removing package data from them.

I don't really agree.  Projects with this kind of data are best off if they 
provide a custom installation tool.  Well, I should say that their *users* 
are best off if they provide an installation tool, rather than dumping the 
files in one place.  Further, it is easier to support global installation 
of a package for multiple users, or for a single user with multiple 
installations of the tool.  (E.g. multiple wikis.)  If the data 
installation is done by easy_install, it can only be done once, and without 
any real options as to how it's done.  If it's done by a function included 
with the package, then it can be done as many times as desired, and with 
whatever options the project wants to provide the user with.

>There are 2 kind of package data: data that is used *by* the module code and
>data that is used *with* the module. moinmoin is just an example of module
>whose data is not used by the code but with the code.

Well, in my way of thinking, such templates *are* used by the code, it's 
just that they should be used by the project's "instance install/config" 

>Another nice thing to have in setuptools is a --nodeps option. Packagers
>really need to install an egg (into a package of course) even if its
>dependencies are not on the system. Skipped dependencies could be reported
>inside a skipped_deps.txt file or on stdout (so that packagers can add the
>dependency info to the generated packages).

We could have a --record-deps option, but you can also just pull the 
dependencies from the Distribution.requires() method.  I have had it on my 
list to have a --no-deps option, though, I just haven't gotten around to it 

More information about the Distutils-SIG mailing list