pip无法使用--user选项本地安装Python包

20 投票
3 回答
37837 浏览
提问于 2025-04-17 19:08

我正在尝试用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 个回答

0

使用用户命令安装任何软件包

升级pip的方法:

python -m pip install --upgrade --user pip
4

根据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
23

引用一下 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 这两个参数。

撰写回答