where should pygame be installed by pip? /usr/lib or ~/.local/lib?
去年我在Ubuntu16.04.5 LTS上测试了一款自动驾驶汽车模拟器卡拉,当时我已经安装了Pygame。当时pygame安装在/usr/lib/python2.7/dist-packages/pygame下,我在那里修复了一个文件,使其正常工作。现在,最近我重新安装了Ubuntu16.04.5LTS(仅操作系统部分),并尝试测试Carla,发现我必须安装pygame(当然了)。所以我做了pip install pygame(没有sudo),卡拉现在又开始工作了。但是很快我发现Pygame安装的位置现在不是/usr/lib/python2.7/dist-packages/pygame,而是~/.local/lib/python2.7/site-packages/pygame。为什么它安装在本地主目录中,而不是系统目录中?(我试着用sudo安装它,但它说需求已经满足了。)我试了一下python -m pip uninstall pip,但收到了下面的信息。
1 2 3
| 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,它会请求根权限,而不安装它。但是pip安装在~/.local下。因此,这个问题不同于建议的重复问题。
- pip安装和sudo pip安装的区别可能是什么?
- 这个或我的回答澄清了你最初的问题吗?
- @是的,谢谢!(我在选择你的选择并检查它是否正确之后很忙)。
首先,python -m pip uninstall pip是用来卸载pip,而不是pygame,所以您不想这样做。
当使用sudo调用时,pip将在/usr/lib上安装整个系统的库,这样所有用户都可以访问它们。
当在没有sudo和/或带有--user标志的情况下调用时,它们仅为您的用户安装在主目录中。在这两种情况下,pip报告库已经安装,不需要重新安装。看看Triplee提供的链接,以及这里
您可以使用以下方法来验证python是否查看这两个路径以查找可用的库。
1 2
| import sys
print(sys.path) |
为了说明你的观点,这两个地点都很好,这只是一个偏好问题。
如果要从~/.local中卸载pygame,应尝试pip uninstall pygame,然后再次使用sudo pip install pygame,以进行系统范围的静态版本安装。
在我看来,最好在本地收集用户依赖项,这样每个用户都可以根据自己的需求自由地安装/删除/更新库和模块,最好是在其虚拟环境中。
- 嗨,谢谢!对。我不知道pip,如果我们省略了sudo,它将安装在~/.local下。通常,当我们使用apt install进行安装时,它会请求根权限而不进行安装,这与PIP行为不同。这是我不知道的。
- 很高兴你的问题得到回答!
- 现在我在~/.local中卸载了pygame,然后用sudo安装它,现在安装在/usr/local中。