我知道最明显的答案是使用virtualenv和virtualenvwrapper,但由于各种原因,我不能/不想这样做。

那么如何修改命令呢

pip install package_name

让PIP在默认的site-packages之外的地方安装这个包?


当前回答

pip3 install "package_name" -t "target_dir"

来源:https://pip.pypa.io/en/stable/reference/pip_install/

-t switch = target

其他回答

PIP install /path/to/package/

现在是可能的。

这与使用-e或——editable标志的区别在于-e链接到包的保存位置(即下载文件夹),而不是将其安装到python路径中。

这意味着如果您删除/移动包到另一个文件夹,您将无法使用它。

新版本的pip(8或更高版本)可以直接使用——prefix选项:

pip install --prefix=$PREFIX_PATH package_name

其中$PREFIX_PATH是lib、bin和其他顶级文件夹所在的安装前缀。

对于Python v2.7.3 (GNU/Linux)上的pip v1.5.6, option——root允许指定全局安装前缀,(显然)与特定包的选项无关。尝试f.i。,

$ pip install --root=/alternative/prefix/path package_name
pip3 install "package_name" -t "target_dir"

来源:https://pip.pypa.io/en/stable/reference/pip_install/

-t switch = target

不幸的是,如果您在python中使用brew, pip/pip3附带的选项非常有限。你没有上面提到的——install-option,——target,——user选项。

注意pip install——user 对于已酿造的Python,禁用了正常的pip install——user。这是因为distutils中的一个错误,因为Homebrew编写了一个distutils.cfg来设置包前缀。 一个可能的解决方案(将可执行脚本放在~/Library/Python/./bin中)是: Python -m PIP install——user——install-option="——prefix=" <package-name>

您可能会发现这一行非常麻烦。我建议使用pyenv进行管理。 如果你正在使用

编译升级python python3

讽刺的是,你实际上降低了pip的功能。

(我发布这个答案,只是因为我的mac osx中的pip没有目标选项,我花了几个小时来修复它)