将pip安装到/usr/bin而不是/usr/local/bin

3

我想升级pip。目前pip位于/usr/bin,但当我使用“pip install --upgrade pip”升级pip时,它会将pip升级到/usr/local/bin而不是/usr/bin。有没有办法将pip安装在/usr/bin中,而将所有pip库放在/usr/lib或/usr/lib64等位置?


1
不要动 /usr/bin/usr/lib — 这样会有破坏你的系统 Python 的风险。只需要在 $PATH 中将 /usr/local/bin 放在 /usr/bin 之前即可。 - phd
好的,我只是在玩一个 Docker 容器。 - Jason
1个回答

7
一般来说,以root身份运行pip永远不是一个好主意。您正在将文件安装到根目录,这些文件没有被您的发行版软件包管理器跟踪。
听起来可能不那么糟糕,但通常情况下是有问题的,因为您正在使用可能与其他文件冲突并且很难删除的文件来混乱您的系统。
Pip正在正确地将自己安装到/usr/local中。一般约定是,您自己的目录之外的/etc/varlocal系统目录中的内容由软件包管理器跟踪。
软件包管理器将覆盖这些目录之外的文件而不会询问。系统目录的local副本的存在是为了让您有机会在系统范围内安装程序而不会被干扰。然而,大多数时候,有更好的方法可以解决问题。
例如,在Python中最好的方法是使用虚拟环境virtualenv。它们提供了一个隔离的环境,您可以激活并在其中安装东西,包括最新版本的pip。
您也可以以用户身份运行它(无需sudo),但是您需要将其bin目录添加到$PATH中。
最好不要动/usr/bin/pip,否则会发生糟糕的事情。
回答您的问题,如果您真的不能没有它在/usr/bin或虚拟环境中,很遗憾告诉您pip没有这样的记录选项。但是,您有两个选择:
1.删除您的发行版pip软件包,然后将/usr/bin/pip链接到/usr/local/bin/pip。这将起作用,但它仍然在技术上安装在/usr/local中。此外,任何依赖于您发行版的pip软件包的其他程序都必须被删除。
2.(非常糟糕)下载pip源代码,然后使用sudo python setup.py install --prefix=/usr安装它。这将把它放在/usr/bin中,但是您应该为做出这样的决定感到非常内疚。
我真的无法强调这种做法有多糟糕了。

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