去年我在ubuntu 16.04.5 LTS上测试CARLA,一个自动驾驶汽车模拟器,当时我已经安装了pygame。当时pygame已经安装在/usr/lib/python2.7/dist-packages/pygame下,我在那里修复了一个文件,使其正常工作。现在,最近我为机器重新安装了ubuntu 16.04.5 LTS(只是操作系统部分),并尝试测试CARLA,发现我必须安装pygame(当然是这样)。所以我做了pip install pygame
(没有sudo),CARLA现在又工作了
但很快我发现pygame的安装位置现在不是/usr/lib/python2.7/dist-packages/pygame,而是~/.local/lib/python2.7/site-packages/pygame。
为什么它安装在我的本地主目录中,而不是系统目录中?(我试着用sudo安装它,但它说需求已经满足。)
我尝试了python -m pip uninstall pip
,但收到了下面的消息。
Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
You are using pip version 8.1.1, however version 19.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
我应该做pip upgrade
吗
附加:这个问题与"sudo"或"apt-install"无关。通常在apt install
中,如果我们省略了sudo
,它会要求root权限而不安装它。但pip会在~/.local下安装它。因此,这个问题与建议的重复问题不同。
首先,python -m pip uninstall pip
是用来卸载pip的,而不是pygame
,所以不想这么做。
当使用sudo
调用时,pip将在/usr/lib
上安装系统范围的库,以便所有用户都可以访问这些库。
当在没有sudo和/或带有--user
标志的情况下调用时,它们仅为用户安装在主目录中。无论哪种情况,pip
都会报告库已安装,无需重新安装
您可以使用以下方法来验证Python是否同时查看这两个路径以查找可用的库。
import sys
print(sys.path)
为了解决您的观点,这两个位置都很好,这只是偏好的问题。
如果您想从~/.local
卸载pygame
,您应该尝试pip uninstall pygame
,然后再次使用sudo pip install pygame
,以进行系统范围的静态版本安装。
在我看来,最好在本地收集用户依赖关系,这样每个用户都可以根据自己的需求自由安装/删除/更新库和模块,最好是在虚拟环境中。