Install a Python package into a different directory using pip?
The --target switch is the thing you're looking for:
pip install --target=d:\somewhere\other\than\the\default package_name
But you still need to add
PYTHONPATH to actually use them from that location.
-t, --target <dir>
Install packages into <dir>. By default this will not replace existing files/folders in <dir>.
Use --upgrade to replace existing packages in <dir> with new versions.
Upgrade pip if target switch is not available:
On Linux or OS X:
pip install -U pip
On Windows (this works around an issue):
python -m pip install -U pip
pip install --install-option="--prefix=$PREFIX_PATH" package_name
You might also want to use
--ignore-installed to force all dependencies to be reinstalled using this new prefix. You can use
--install-option to multiple times to add any of the options you can use with
python setup.py install (
--prefix is probably what you want, but there are a bunch more options you could use).
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
This uses the very useful
--user option but tells it to make the
share and other directories you'd expect under a custom prefix rather than
Then you can add this to your
PYTHONPATH and other variables as you would a normal installation directory.
Note that you may also need to specify the
--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
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:$PYTHONPATHexport PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH
Using virtualenv is still a better and neater solution!