[Distutils] Creating a new installation layout

Tim Cuthbertson tim at gfxmonk.net
Tue Apr 10 07:35:46 CEST 2012

On Tue, Apr 10, 2012 at 3:18 PM, PJ Eby <pje at telecommunity.com> wrote:
> On Apr 8, 2012 7:47 AM, "Tim Cuthbertson" <tim at gfxmonk.net> wrote:
>> I'm curious, how would one create a new layout? (as in a --layout=deb
>> alternative). I'd very much like to have a layout that doesn't include
>> any version information in the path, which both "deb" and "unix" do.
>> Ideally, output would look pretty much like:
>> bin/
>> bin/script1
>> bin/script2
>> lib/
>> lib/some_c_ext.so
>> lib/python/
>> lib/python/packagename/
>> lib/python/packagename/__init__.py
>> lib/python/packagename/core.py
> Use "setup.py install --single-version-externally-managed
> --install-lib=lib/python --install-scripts=bin"; add other options for any
> other directories as needed.

Cheers, will look into it. Is there a canonical list of what possible
directories, or should I just look at the --help output?

Am I going to run into trouble where some projects have different
options? For example, calling `python setup.py` could be implemented
by distutils, setuptools, distribute, and god knows what else. I would
like for the same options to work across all backends, since I'm
building a lot of libraries without wanting to care too deeply about
which build system they use. Is this doable, or would it potentially
have to be crafted to each package?

> You can configure these options in your .pydistutils.cfg so as to not have
> to set them every time you create an installation.
>> Something simple, without the unnecessary layers of "usr", "local",
>> "site-packages", "python2.7" etc. The purpose is to be put into a
>> self-contained archive, so it's completely unnecessary to include such
>> namespacing (it will never be mixed in with any other files).
> FWIW, you can use bdist_egg to create a similar archive, except that lib/ is
> replaced by ./ and bin/ is replaced by EGG-INFO/scripts/.

True, although I want a folder, not an archive. I could unpack it, but
the less steps in a build script the better.

More information about the Distutils-SIG mailing list