默认为用户安装,因为普通站点包不可写

默认为用户安装,因为普通站点包不可写

我刚刚手动安装了 Devuan GNU/Linux chimaera 和一堆软件包。还安装了python-is-python3

我现在运行,例如:

pip install pymonetdb

我得到:

Defaulting to user installation because normal site-packages is not writeable
Collecting pymonetdb
  Downloading pymonetdb-1.6.2-py2.py3-none-any.whl (74 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 74.6/74.6 kB 867.9 kB/s eta 0:00:00
Installing collected packages: pymonetdb
Successfully installed pymonetdb-1.6.2

我想知道为什么我收到有关站点包不可写的消息。是因为我不是root用户吗?但如果是这样的话,那也不应该尝试写入某些仅根文件夹。如果是的话不是因为我不是 root - 哪个目录具有不适当的权限,需要我修复(或让 root 用户修复)?

答案1

我想知道为什么我收到有关站点包不可写的消息。

这是因为 pip 默认尝试安装到系统范围的目录(“site-packages”)。

是因为我不是root用户吗?

是的。

但如果是这种情况,它甚至不应该尝试写入某些仅根文件夹。

事实上,它不应该:它知道它是由非 root 用户运行的,并且知道它因此几乎肯定会失败,因此在这种情况下不应该默认尝试安装到用户特定的目录(如果不是总是如此)。但是 - 它仍然会尝试、失败和抱怨,这很愚蠢,但这正是开发人员出于某种原因认为他们应该做的事情。

您可以通过像这样运行它来避免警告:

pip install --user some_package_name

...但恕我直言,真正应该发生的是有人提交有关此问题的错误报告,并依靠开发人员不要尝试失败。

答案2

这种行为是有道理的:您实际上不应该使用 pip 将软件安装到系统范围的站点包中,因为这会导致与系统包管理器发生冲突,除非您处于某种虚拟环境中,其中被弯曲到可写位置。这实际上与您是否是 root 无关。

相关内容