我知道最明显的答案是使用virtualenv和virtualenvwrapper,但由于各种原因,我不能/不想这样做。
那么如何修改命令呢
pip install package_name
让PIP在默认的site-packages之外的地方安装这个包?
我知道最明显的答案是使用virtualenv和virtualenvwrapper,但由于各种原因,我不能/不想这样做。
那么如何修改命令呢
pip install package_name
让PIP在默认的site-packages之外的地方安装这个包?
当前回答
新版本的pip(8或更高版本)可以直接使用——prefix选项:
pip install --prefix=$PREFIX_PATH package_name
其中$PREFIX_PATH是lib、bin和其他顶级文件夹所在的安装前缀。
其他回答
PIP install /path/to/package/
现在是可能的。
这与使用-e或——editable标志的区别在于-e链接到包的保存位置(即下载文件夹),而不是将其安装到python路径中。
这意味着如果您删除/移动包到另一个文件夹,您将无法使用它。
而不是——target或——install-options选项,我发现设置PYTHONUSERBASE环境变量工作得很好(来自关于这个问题的bug的讨论):
PYTHONUSERBASE=/path/to/install/to pip install --user
(或者在运行命令之前设置环境中的PYTHONUSERBASE目录,使用export PYTHONUSERBASE=/path/to/install/to)
这使用了非常有用的——user选项,但告诉它在自定义前缀下创建bin、lib、share和其他目录,而不是$HOME/.local。
然后,您可以将其添加到您的PATH、PYTHONPATH和其他变量中,就像将其添加到正常的安装目录中一样。
注意,如果依赖于的任何包需要在PYTHONUSERBASE目录中安装新版本,以覆盖系统提供的版本,则可能还需要指定——upgrade和——ignore-installed选项。
完整的例子
PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy
..将最新版本的scipy和numpy包安装到一个目录中,然后你可以像这样将该目录包含在PYTHONPATH中(本例中使用bash和CentOS 6上的python 2.6):
export PYTHONPATH=/opt/mysterypackage-1.0/python-deps/lib64/python2.6/site-packages:$PYTHONPATH
export PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH
使用virtualenv仍然是一个更好、更整洁的解决方案!
为了将库安装在我想要的位置,我导航到我想要的带有终端的目录的位置
pip install mylibraryName -t .
我的逻辑是从这一页:https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/download
似乎没有人提到-t选项,但最简单的是:
pip install -t <direct directory> <package>
Use:
pip install --install-option="--prefix=$PREFIX_PATH" package_name
您可能还想使用——ignore-installed强制使用这个新前缀重新安装所有依赖项。你可以多次使用——install-option来添加任何你可以在python setup.py install中使用的选项(——prefix可能是你想要的,但你可以使用更多的选项)。