可能吗?安装 pip
时,将 python 包安装在我的 $HOME
文件夹中。 (例如,我想安装 mercurial
,使用 pip
,但在 $HOME
内部而不是 /usr/local
)
我使用的是 mac 机器,只是想到了这种可能性,而不是“污染”我的 /usr/local
,而是使用我的 $HOME
。
PEP370 正是关于这一点。只是创建一个 ˜/.local
并执行一个 pip install package
足以使这些软件包仅安装在我的 $HOME 文件夹中吗?
$ python setup.py --user install
。它奏效了。软件包现在安装在 home 子目录中,并且所有工作都按预期进行。将不得不与我的服务器管理员交谈。
wget https://bootstrap.pypa.io/get-pip.py
后跟 python get-pip.py
之类的操作即可。如果您在安装的 PIP 太旧的机器上(对我来说就是这种情况),可能会很有用。有关详细信息,请参阅 pip.readthedocs.org/en/latest/installing.html。
虽然您可以使用 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。 Python 核心开发人员中有一个关于在 Mac OS X 上安装 PEP370 样式 user
的适当目录位置的问题bit of controversy。在 Python 2.7 和 3.2 中,Mac OS X 上的位置从 $HOME/.local
更改为 $HOME/Library/Python
。这可能会在未来的版本中改变。但是,目前,在 2.7(和 3.2,如果 Python 3 支持 hg
)上,上述位置将是 $HOME/Library/Python/x.y/bin/hg
和 $HOME/Library/Python/x.y/lib/python/site-packages
。
我会在你的 HOME 目录中使用 virtualenv。
$ sudo easy_install -U virtualenv
$ cd ~
$ virtualenv .
$ bin/pip ...
然后,您还可以更改 ~/.(login|profile|bash_profile)
,以适合您的 shell 将 ~/bin 添加到您的 PATH 中,然后 pip|python|easy_install
将成为默认使用的那个。
virtualenv venv
、source venv/bin/activate
。您可能不一定希望始终使用您的 virtualenv,并且通过使用此方法,您在使用时会以 (venv)
为前缀。
您可以指定 -t
选项 (--target
) 来指定目标目录。有关详细信息,请参阅 pip install --help
。这是您需要的命令:
pip install -t path_to_your_home package-name
例如,为了安装 mxnet,在我的 $HOME
目录中,我键入:
pip install -t /home/foivos/ mxnet
distutils.errors.DistutilsOptionError: can't combine user with prefix, exec_prefix/home, or install_(plat)base
。这是什么意思?
从其他答案中提取的两个问题的简短答案
一
是的
可以将 pip 包安装到 $HOME 而不是 /usr/local/lib/,但是
二
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 以外的其他用户不可写
easy_install
默认安装在 Mac OS X 中,所以我只会将 pip 安装在$HOME
文件夹之外。.local
中的文件将始终首先被命中,这可能导致很难追踪导入错误。export PATH=$PATH:~/Library/Python/X.Y/bin/
,否则用户站点目录中的软件包安装的脚本将无法执行。