将pip软件包安装到$ HOME文件夹


330

可能吗?安装时pip,将python软件包安装在我的$HOME文件夹中。(例如,我想使用安装,但mercurial使用而不是)pip$HOME/usr/local

我在Mac机器上,只是考虑了这种可能性,而不是“污染”我的/usr/local$HOME而是使用我的。

PEP370正是与此有关。只是创建一个˜/.localpip install package足以将这些软件包安装在我的$ HOME文件夹中?


您是否签出virtualenv?您可以在隔离的环境中使用pip安装软件包。
2011年

2
我考虑了一下,但是我想使用现有的python(2.6.1)安装一些python应用程序,但是不是在/ usr / local /下安装,而是在我的$ HOME文件夹中安装并将其添加到$ PATH中。我想知道是否有可能,以及这种方法的任何注意事项。
有人仍在使用您MS-DOS

11
+1用于宣传PEP370。这是一个简单但有用的选项,更多的人应该知道。
内德·迪利

我正在解决类似的问题(可能是由于两种不同的pyhton的pip和easy_install配置错误造成的)。作为最后的选择,我尝试使用plain $ python setup.py --user install。而且有效。现在,程序包已安装在home子目录中,并且可以正常运行。将不得不与我的服务器管理员交谈。
2013年

1
如果您需要安装PIP,只需执行以下操作,wget https://bootstrap.pypa.io/get-pip.py然后python get-pip.py就可以了。如果您使用的机器上安装的PIP太旧(对我来说就是这种情况),可能会很有用。有关更多信息,请参见pip.readthedocs.org/en/latest/installing.html
Markus 2014年

Answers:


463

虽然您可以使用virtualenv,但不需要。诀窍是将PEP370 --user参数传递给setup.py脚本。使用的最新版本pip,一种方法是:

pip install --user mercurial

这应导致hg脚本已安装在中$HOME/.local/bin/hg,而hg软件包的其余部分已安装在中$HOME/.local/lib/pythonx.y/site-packages/

请注意,以上内容适用于Python 2.6。一直有一些争议的关于什么是PEP370风格的Mac OS X上的相应目录位置Python的核心开发者user安装。在Python 2.7和3.2中,Mac OS X上的位置从更改$HOME/.local$HOME/Library/Python。这可能会在将来的版本中更改。但是,目前,在2.7(和3.2,如果hgPython 3支持的话)上,上述位置将是$HOME/Library/Python/x.y/bin/hg$HOME/Library/Python/x.y/lib/python/site-packages


好点子。不幸的是,Python 2.7中存在一个错误,导致OS X框架构建忽略PYTHONUSERBASE。它将在Python 2.7.3中修复。
内德·迪利

1
这看起来很有意思。easy_install会默认安装在Mac OS X中,因此我只会在$HOME文件夹外部安装pip 。
仍有人使用您的MS-DOS

1
我试图将PYTHONUSERBASE更改为另一个位置。没有成功 具体如何在Windows上完成?
Snerd

2
请注意,如果执行此操作,然后尝试使用conda环境,.local则始终会首先命中安装在其中的文件,这可能会导致很难跟踪导入错误。
塔卡斯韦尔(T​​acaswell)

12
请注意,在OSX上,用户站点目录的bin文件夹不在PATH上。这意味着除非您,否则用户站点目录中的软件包安装的脚本将无法执行export PATH=$PATH:~/Library/Python/X.Y/bin/
安德烈·卡隆

21

我会在您的HOME目录中使用virtualenv。

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

然后~/.(login|profile|bash_profile),您还可以更改,无论哪种方式都适合您的shell将〜/ bin添加到您的PATH中,然后pip|python|easy_install默认情况下使用。


9
“事实上”的方式来做到这一点virtualenv venvsource venv/bin/activate。您可能不一定要始终使用virtualenv,通过使用此方法,您的提示将(venv)在使用时加上前缀。
nyuszika7h 2014年

2
@ nyuszika7h我们知道如何使用virtualenv。但这确实回答了这个问题,并且是一个非常巧妙的解决方案。
itsafire

8
@itsafire谁是“我们”?我建议您阅读en.wikipedia.org/wiki/Weasel_word
nyuszika7h 2015年

3
无论如何,我不同意,这不是一个“巧妙的解决方案”。这是毫无意义的黑客。
nyuszika7h 2015年

19

您可以指定-t选项(--target)来指定目标目录。请参阅pip install --help以获取详细信息。这是您需要的命令:

pip install -t path_to_your_home package-name

例如,要在我的$HOME目录中安装说“ mxnet”,请输入:

pip install -t /home/foivos/ mxnet

遇到错误distutils.errors.DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base。这是什么意思?
安东尼·孔

检查github.com/pypa/pip/issues/3826进行相关讨论。我对此一无所知,但是在我的环境中我从未遇到过任何问题。
Foivos
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.