我正在尝试使用命令pip install -U psutil
安装psutil,但出现错误:
Cannot uninstall 'psutil'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
看起来这是一个已知问题,与
pip
的版本 > 10
有关,我理解这一点(我目前有pip 18
)。但我刚刚发现可以通过直接执行pip install psutil
而不使用Upgrade
标志来解决它。我想知道背后的原因。我最初的感觉是,在第一种情况下,即pip
尝试升级时,它首先尝试删除软件包,但它无法删除,但在后一种情况下,它直接尝试安装,因此没有出现错误。我的问题是,当不使用Upgrade标志时,它是否仍然不需要先删除软件包再安装,或者为什么特别是在使用Upgrade标志时pip会报错,而不使用标志时不会出错。编辑:因此,我尝试像hoefling建议的那样运行
pip install -v psutil
,但是我得到了一大堆文本,而不是说已经满足要求,这意味着psutil首先没有被安装。 我试图弄清楚这个问题,到目前为止,我所理解的是:我在python 虚拟环境
内运行,并通过pip -U -r requirements.txt
来安装它,其中requirements.txt
包含一堆软件包,包括psutil
。 当我删除-U
标志时,它会跳过安装psutil
并转到其他软件包。这引起了另一个问题,当没有-U
标志时,是否应该这样使用pip
。有趣的是,第一次使用-U标志安装软件包时,它会查找主python安装而不是虚拟环境,当删除-U标志时,它不会这样做并完全跳过它。
psutil
,还是您实际上已经easy_install psutil
或类似的方式安装了它? - abarnertpip
版本,比如 1.5.x 吗?setuptools
已经破坏了向后兼容性几次,但我不认为你会在 Ubuntu 18.04 中看到这种情况... - abarnertUbuntu 18.04
预装的。 - QPTRsys.path
上是否存在两个不同位置的psutil
副本。 只要新版本是在较早的sys.path
位置中的版本,一切都应该正常工作(原因与我的答案中的某些变化相关,尽管我不知道Ubuntu 18.04的特定细节)。 如果旧版本不再存在,则可能发生了不同的情况。 - abarnert