I'd want to install python modules as non-root user like this
$ pip install -I --install-option="--prefix=~/usr" scipy
Unfortunately this usually does not work unless you specify --user
. But --user
can't be used together with --prefix
. Using --user
only (without --prefix
) installs to ~/.local
which I find ugly because I have a well maintained ~/usr
and don't want to add even more stuff to my env
to make ~/.local
usable too.
So my questions:
--prefix
and --user
work together for setup.py or how else could setup.py succeed without using --user
?~/.local
to ~/usr
somehow by env
?To answer your first question:
In Installing Python Modules guide written by Greg Ward we read:
Note that the various alternate installation schemes are mutually exclusive: you can pass --user, or --home, or --prefix and --exec-prefix, or --install-base and --install-platbase, but you can’t mix from these groups.
To answer your second question:
In the same guide there's section Alternate installation: the user scheme where we read:
Files will be installed into subdirectories of
site.USER_BASE
with site.USER_BASE
linked to https://docs.python.org/2/library/site.html#site.USER_BASE. There we are asked to see also information on PYTHONUSERBASE
environment variable:
Defines the user base directory, which is used to compute the path of the user site-packages directory and Distutils installation paths for python setup.py install --user.
Also, you might be interested in the home scheme:
The idea behind the “home scheme” is that you build and maintain a personal stash of Python modules. This scheme’s name is derived from the idea of a “home” directory on Unix, since it’s not unusual for a Unix user to make their home directory have a layout similar to /usr/ or /usr/local/.