Instead of the --target
option or the --install-options
option, I have found that the following works well (from discussion on a bug regarding this very thing at https://github.com/pypa/pip/issues/446):
PYTHONUSERBASE=/path/to/install/to pip install --user
(Or set the PYTHONUSERBASE
directory in your environment before running the command, using export PYTHONUSERBASE=/path/to/install/to
)
This uses the very useful --user
option but tells it to make the bin
, lib
, share
and other directories you'd expect under a custom prefix rather than $HOME/.local
.
Then you can add this to your PATH
, PYTHONPATH
and other variables as you would a normal installation directory.
Note that you may also need to specify the --upgrade
and --ignore-installed
options if any packages upon which this depends require newer versions to be installed in the PYTHONUSERBASE
directory, to override the system-provided versions.
A full example:
PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy
..to install the scipy
and numpy
package most recent versions into a directory which you can then include in your PYTHONPATH
like so (using bash and for python 2.6 on CentOS 6 for this example):
export PYTHONPATH=/opt/mysterypackage-1.0/python-deps/lib64/python2.6/site-packages:$PYTHONPATH
export PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH
Using virtualenv is still a better and neater solution!