pip无法使用--user选项本地安装Python包
我正在尝试用pip在本地安装一些包。之前用--user
参数是可以正常工作的,但现在当我尝试时,它会在/usr/local/lib/
这个地方找到包的版本,然后就不在本地安装了。通常情况下,它会把东西安装到~/.local
,但现在它只会检查系统的目录,如果那里有这个包,它就不安装(这不是我想要的)。如果那里没有,它又会尝试在/usr/local/lib
安装,但我没有写入权限。比如:
$ pip install --user rpy2
Requirement already satisfied (use --upgrade to upgrade): rpy2 in /usr/local/lib/python2.7/dist-packages/
我该怎么做才能让pip install --user
总是安装到~/.local
而不是系统目录呢?
3 个回答
根据pip的文档,这种语法是正确的,但需要使用Python 2.6版本。
用户安装
Python 2.6引入了“用户方案”这个概念,意思是所有的Python版本都支持一种特定于用户的安装位置。每个操作系统的默认位置在Python文档中有解释,涉及到一个叫做site.USER_BASE的变量。要启用这种安装方式,可以在使用pip安装时加上–user这个选项。
而且,“用户方案”还可以通过设置PYTHONUSERBASE这个环境变量来进行自定义,这样就可以更新site.USER_BASE的值。
如果你想把“SomePackage”安装到一个将site.USER_BASE自定义为‘/myappenv’的环境中,可以按照以下步骤操作:
export PYTHONUSERBASE=/myappenv
pip install --user SomePackage
所以,下面的输入应该对你有效:
export PYTHONUSERBASE=~/.local
pip install --user rpy2
引用一下 Marcus Smith(pip 的维护者)的话:
如果你觉得全局的安装包有点过时了,想要在用户目录里获取最新的版本,可以使用:
pip install --upgrade --user SomePackage
如果全局的安装包是最新的,而你只是想在
--user
目录里重复安装一遍,那么可以用:
pip install --ignore-installed --user SomePackage
(这个在合并了 #1352 后现在可以正常工作,预计会在 v1.5 版本中发布)
我怎么才能让 pip install --user
一直安装到 ~/.local
而不是系统目录呢?
可以同时使用 --upgrade
和 --ignore-installed
这两个参数。