pip不会在本地使用--user安装Python包。

20

我正在尝试使用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而不是系统范围的目录?


它说“需求”已满足,并告诉您使用--upgrade选项,您尝试使用过吗? - PurityLake
@PurityLake:是的,这并没有改变任何事情。 - user248237
3
pip 这样的“程序员常用的软件工具”是相关话题。投票重新开放。 - Mechanical snail
我同意这个问题应该重新开启。一个类似的问题是https://dev59.com/XHHYa4cB1Zd3GeqPMIK-?rq=1 - RNA
这可能不是一个解决方案,但这可以节省您一些时间。尝试在需要与系统范围安装不同的安装时使用virtualenv。 - user2390183
我认为我的答案提供了解决方案 - 你能帮忙检查一下吗? - Piotr Dobrogost
3个回答

23

引用 pip 维护者 Marcus Smith:

如果你认为全局站点已经过时,想要最新的用户站点,请使用:
pip install --upgrade --user SomePackage

如果全局站点是最新的,并且你真的只想在--user中复制同样的内容,则请使用:
pip install --ignore-installed --user SomePackage(自 v1.5 合并 #1352 后现在可以正确工作)

如何使 pip install --user 始终进入 ~/.local 而不是系统范围的目录?

使用 --upgrade--ignore-installed 参数。


1
感谢提到pip的错误。我唯一缺少的是将--prefix与--user结合使用,参见https://dev59.com/y4Dba4cB1Zd3GeqPLPlW - rudimeier

4
根据pip文档,该语法是正确的,但需要Python 2.6。
用户安装
随着Python 2.6的推出,“用户方案”成为了安装的一种方式,这意味着所有Python发行版都支持特定于用户的替代安装位置。每个操作系统的默认位置在python文档中的site.USER_BASE变量中有解释。可以通过指定“--user”选项来打开此安装模式。
此外,“用户方案”可以通过设置PYTHONUSERBASE环境变量进行自定义,从而更新site.USER_BASE的值。
要将“SomePackage”安装到具有已定制为“/myappenv”的site.USER_BASE环境中,请执行以下操作:
export PYTHONUSERBASE=/myappenv 
pip install --user SomePackage

所以以下条目应该适合您的需求:
export PYTHONUSERBASE=~/.local
pip install --user rpy2

pip文档位于:pip cookbook - JamCon
1
MagicalPony: 不知道那个,谢谢。但是设置PYTHONUSERBASE并没有起作用-它仍然在/usr/local/lib/中查找。 - user248237
pip install --user --force-reinstall --upgrade jinja2 可以安装到 ~/.local/ 目录下。 - RNA
这可能不是一个解决方案,但这可以节省您一些时间。尝试在需要与系统范围安装不同的安装时使用virtualenv。 - user2390183

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接