[Distutils] Some clarifications and/or corrections to PEP 376

Vinay Sajip vinay_sajip at yahoo.co.uk
Fri Jan 4 16:27:41 CET 2013

> From: Paul Moore <p.f.moore at gmail.com>

> I agree - on Windows, I would generally consider a package that
> installed anything outside of the Python installation to be pretty
> much broken (it wouldn't work properly in a virtualenv, for example).

Not necessarily - for example, I did some work on virtualenvwrapper-like functionality for PowerShell which required installing stuff in users' PowerShell profile locations. I agree that care has to be taken by the distribution developer to consider use cases carefully, but surely Windows is one environment where installers (in general) put things in many different locations?

> The problem seems to be that Unix/Linux packaging experts seem to have
> differing views (in particular around FHS-related concerns). I don't
> understand these issues well enough to comment, other than to say that
> even among the Unix community there does not seem to be consensus that
> there is a need for installation to write outside of site-packages.

If you do system installations of things, you're expected to put e.g. translations in /usr/share/locale, man pages in /usr/share/man etc. Of course, this doesn't apply when installing to a venv, but then venvs don't have iron-clad conventions about how you install into them. IIUC distutils / distribute allows you to override paths to put things in arbitrary locations.
> I'm -1 on absolute paths. Sure, there's an issue with installing files
> no locations outside the Python installation, but I'd suggest (1)
> deprecating such usage, and (2) using absolute paths there. An
> install-time warning might be useful, if it's easy to do. Vinay - does
> your analysis of PyPI give any indication of what proportion of
> packages actually use the ability to install to arbitrary locations?
> I.e., how much of a real world issue is this?

I haven't looked closely into this area regarding existing PyPI distributions, and I'm not sure you can tell actual usage patterns, since you can override paths at installation time using command-line parameters. I do know that other installation systems like Bento offer a lot of options for directory paths, and I certainly don't get the feeling that all those paths are in site-packages.

One possible problem I see is that if we don't get enough feedback from a wide enough range of respondents about what actual use cases are, we'll be in the dark when it comes to trying to tie some of this functionality down. I don't know enough about NumPy and SciPy environments and the needs of their users to be sure that we can deprecate features that they might need/already be using.

By the way, if you move a distribution after installing it, it is unlikely to stop working just because the record of installed files uses only absolute paths. What that list is used for is uninstallation, which you perhaps don't need if you're moving stuff around the system by hand. If anything does stop working, it's likely to be any scripts which have shebang lines pointing to the original installation locations using absolute paths. IIUC those scripts wouldn't work in PJE's OSAF scenario, either, except perhaps on the machine which was used to install into the now shared location.


Vinay Sajip

More information about the Distutils-SIG mailing list