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

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

PEP370就是这样的。就是创建一个~ /。做一个pip安装包足以使这些包只安装在我的$HOME文件夹?


当前回答

简短地回答你的两个问题

One

Yes

可以将pip包安装到$HOME而不是/usr/local/lib/,但是

Two

mkdir ˜/.local # then
pip install package 

还不够。

你需要

pip install package --user

这些包被安装到

/home/user/.local/lib/python3.x/site-packages

当您不需要——user时异常

如果您不是root用户 关于Debian连同Wsl - Windows子系统Linux没有通知 在Ubuntu 20.04上注意默认用户安装,因为正常的站点包不可写-默认配置/usr/lib对于除了root用户以外的其他用户不可写

其他回答

简短地回答你的两个问题

One

Yes

可以将pip包安装到$HOME而不是/usr/local/lib/,但是

Two

mkdir ˜/.local # then
pip install package 

还不够。

你需要

pip install package --user

这些包被安装到

/home/user/.local/lib/python3.x/site-packages

当您不需要——user时异常

如果您不是root用户 关于Debian连同Wsl - Windows子系统Linux没有通知 在Ubuntu 20.04上注意默认用户安装,因为正常的站点包不可写-默认配置/usr/lib对于除了root用户以外的其他用户不可写

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

pip install -t path_to_your_home package-name

例如,要安装mxnet,在我的$HOME目录下,我输入:

pip install -t /home/foivos/ mxnet

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

pip install --user mercurial

这将导致hg脚本被安装在$HOME/目录下。hg包的其余部分在$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.

我会在你的HOME目录下使用virtualenv。

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

然后你也可以修改~/.(login|配置文件|bash_profile),无论哪个对你的shell来说是正确的,将~/bin添加到你的PATH中,然后pip|python|easy_install将是默认使用的。