[Python-Dev] PEP: per user site-packages directory

glyph at divmod.com glyph at divmod.com
Mon Jan 14 20:13:26 CET 2008


On 06:37 pm, lists at cheimes.de wrote:
>glyph at divmod.com wrote:
>>I think the relevant link to change here would be ~/.local.
>>
>>I have personally been using the ~/.local convention for a while, and 
>>I
>>believe ~/.local/bin is where scripts should go.  Python is not the 
>>only
>>thing that can be locally installed, and the fact that it's
>>~/.local/lib/python2.6/site-packages  suggests that ~/.local has the
>>same layout as /usr (or /usr/local, for those who use that 
>>convention).
>
>~/.local/bin or ~/bin ?
>
>~/bin is the standard directory for user binaries.

"the" standard directory?  according to what?  commented-out examples in 
some linux distribution?
>I can see how ~/.local/bin follows the idea of other directories.

I think consistency is important here.  Python is not the only tool that 
could follow this convention, and it would be nice to have a consistent 
convention that it would be easy for other tools and environments to 
adopt.
>But ~/bin is more
>convenient than ~/.local/bin. I don't want to teach users how to change
>their .bashrc or .profile file for ~/.local/bin. A line like

as you say, it is often commented out.  You have to teach users this 
anyway, even if sometimes it will work by accident.

~/bin comes from the convention of "./configure --prefix=$HOME", as 
autoconf suggests.  This means users must have visible directories in 
their home folder named (among other things) "bin", "share", "lib", 
"src", "sbin", "man", and "include".  I find this ugly.  I only find it 
slightly less ugly that Python will now hide its locally-installed 
library files from me but not its locally-installed executable scripts.

"./configure --prefix=$HOME/.local" will instead put things into 
~/.local/bin, ~/.local/lib, etc.

Now, I am aware that setup.py already has a special "--home" option, and 
it can be incompatibly changed, but I don't see a reason for this.  Note 
that --home $HOME will currently put files into ~/lib, not ~/.local/lib. 
(and --home $HOME/local will put scripts into ~/.local/bin, not ~/bin).

But, now that I've told you what I think in more detail, unless you like 
my ideas and have specific questions, I will try to refrain from 
commenting further, lest I dig my own bike shed here :).


More information about the Python-Dev mailing list