Installing pip packages to $HOME folder

PythonPip

Python Problem Overview


Is it possible? When installing pip, install the python packages inside my $HOME folder. (for example, I want to install mercurial, using pip, but inside $HOME instead of /usr/local)

I'm with a mac machine and just thought about this possibility, instead of "polluting" my /usr/local, I would use my $HOME instead.

PEP370 is exactly about this. Is just creating a ˜/.local and do a pip install package enough to make these packages to be installed only at my $HOME folder?

Python Solutions


Solution 1 - Python

While you can use a virtualenv, you don't need to. The trick is passing the PEP370 --user argument to the setup.py script. With the latest version of pip, one way to do it is:

pip install --user mercurial

This should result in the hg script being installed in $HOME/.local/bin/hg and the rest of the hg package in $HOME/.local/lib/pythonx.y/site-packages/.

Note, that the above is true for Python 2.6. There has been a bit of controversy among the Python core developers about what is the appropriate directory location on Mac OS X for PEP370-style user installations. In Python 2.7 and 3.2, the location on Mac OS X was changed from $HOME/.local to $HOME/Library/Python. This might change in a future release. But, for now, on 2.7 (and 3.2, if hg were supported on Python 3), the above locations will be $HOME/Library/Python/x.y/bin/hg and $HOME/Library/Python/x.y/lib/python/site-packages.

Solution 2 - Python

I would use virtualenv at your HOME directory.

$ sudo easy_install -U virtualenv
$ cd ~
$ virtualenv .
$ bin/pip ...

You could then also alter ~/.(login|profile|bash_profile), whichever is right for your shell to add ~/bin to your PATH and then that pip|python|easy_install would be the one used by default.

Solution 3 - Python

You can specify the -t option (--target) to specify the destination directory. See pip install --help for detailed information. This is the command you need:

pip install -t path_to_your_home package-name

for example, for installing say mxnet, in my $HOME directory, I type:

pip install -t /home/foivos/ mxnet

Solution 4 - Python

Short answer to your two questions grabbed from the other answers

One

Yes

it is possible installing pip packages to $HOME instead of /usr/local/lib/, but

Two
mkdir ˜/.local # then
pip install package 

is not enough.

You need

pip install package --user

and the packages get installed to

/home/user/.local/lib/python3.x/site-packages
Exception when you do not need --user
  • if you are not root user
  • On Debian together with Wsl - Windows Subsystem Linux no notice
  • On Ubuntu 20.04 notice default to user installation because normal site-packages not writeable - default config is /usr/lib not writeable for other users except root

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSomebody still uses you MS-DOSView Question on Stackoverflow
Solution 1 - PythonNed DeilyView Answer on Stackoverflow
Solution 2 - PythonRoss PattersonView Answer on Stackoverflow
Solution 3 - PythonFoivosView Answer on Stackoverflow
Solution 4 - PythonTimoView Answer on Stackoverflow