Как установить пакеты в моей папке $HOME с помощью пипа?

Возможно ли это? При установке pip установите пакеты python внутри моей папки $HOME. (например, я хочу установить mercurial, используя pip, но внутри $HOME вместо /usr/local)

Я с машиной Mac и просто подумал об этой возможности, вместо того, чтобы "загрязнять" мой /usr/local, я бы использовал вместо этого $HOME.

PEP370 именно об этом. Просто создайте ˜/.local и сделайте pip install package достаточно, чтобы эти пакеты были установлены только в моей папке $HOME?

Ответы

Ответ 1

Пока вы можете использовать virtualenv, вам не нужно. Трюк передает аргумент PEP370 --user в setup.py script. С последней версией pip один из способов сделать это:

pip install --user mercurial

Это должно привести к тому, что hg script будет установлен в $HOME/.local/bin/hg, а остальная часть пакета hg в $HOME/.local/lib/pythonx.y/site-packages/.

Обратите внимание, что приведенное выше верно для Python 2.6. Между основными разработчиками Python был вопрос о том, что является подходящим расположением в Mac OS X для установок user в стиле PEP370, В Python 2.7 и 3.2 местоположение в Mac OS X было изменено с $HOME/.local на $HOME/Library/Python. Это может измениться в будущей версии. Но на данный момент, на 2.7 (и 3.2, если hg поддерживаются на Python 3), указанные выше местоположения будут $HOME/Library/Python/x.y/bin/hg и $HOME/Library/Python/x.y/lib/python/site-packages.

Ответ 2

Я бы использовал virtualenv в вашем каталоге HOME.

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

Затем вы также можете изменить ~/.(login|profile|bash_profile), в зависимости от того, что подходит вашей оболочке для добавления ~/bin в ваш PATH, а затем pip|python|easy_install будет использоваться по умолчанию.