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

那么如何修改命令呢

pip install package_name

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


当前回答

System选项,将PIP package-bins安装到所有用户都可以访问的/usr/local/bin。没有这个选项的安装可能对所有用户都不起作用,因为东西会到用户特定的目录,如$HOME/。Local /bin,然后是用户特定的安装,必须对所有用户重复,如果不为用户设置,也可能有路径问题,那么垃圾箱将无法工作。所以如果你正在寻找所有的用户-你需要有sudo访问:

sudo su - 
python3 -m pip install --system <module>
logout
log back in 
which <module-bin> --> it should be installed on /usr/local/bin/

其他回答

pip3 install "package_name" -t "target_dir"

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

-t switch = target

有时它只对Cache参数有效

-m pip install -U pip --target=C:\xxx\python\lib\site-packages Pillow --cache-dir C:\tmp

而不是——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/pip.conf文件。注意在文档中缺少指定的头目录,这将导致以下错误:

error: install-base or install-platbase supplied, but installation scheme is incomplete

conf文件的完整工作内容是:

[install]
install-base=$HOME
install-purelib=python/lib
install-platlib=python/lib.$PLAT
install-scripts=python/scripts
install-headers=python/include
install-data=python/data

不幸的是,我可以安装,但当尝试卸载pip告诉我没有这样的软件包卸载过程....所以还是有问题,但是包会回到预定义的位置。

似乎没有人提到-t选项,但最简单的是:

pip install -t <direct directory> <package>