我尝试安装Twilio模块:
sudo -H pip install twilio
我得到了这个错误:
Installing collected packages: pyOpenSSL
Found existing installation: pyOpenSSL 0.13.1
Cannot uninstall 'pyOpenSSL'. 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.
有人知道如何卸载pyOpenSSL吗?
答案 0 :(得分:17)
我遇到了相同的错误,并可以通过以下步骤解决:
pip install --ignore-installed pyOpenSSL
这将安装最新版本的软件包,然后,如果您尝试安装,
pip install twilio
它将起作用。
答案 1 :(得分:11)
此错误表示此程序包的元数据不包括属于它的文件列表。 很可能您是通过操作系统的软件包管理器安装了此软件包,因此也需要使用它而不是pip
来更新或删除它。
例如参见Upgrading to pip 10: 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. · Issue #5247 · pypa/pip就是其中一个示例,其中软件包是与apt
一起安装的。
或者,根据您的需求,不使用系统Python和/或其全局环境,而是创建私有Python安装和/或环境,可能会更有效率。这里有很多选项,包括virtualenv
,venv
,pyenv
,pipenv
以及将Python从源代码安装到
/usr/local
或$HOME
/ $HOME/.local
(或/opt/<whatever>
)。
最后,我必须对经常提出的建议(例如,在pip 10 and apt: how to avoid "Cannot uninstall X" errors for distutils packages)--ignore-installed
pip
上进行评论。
它可能起作用(可能会满足您的业务需求足够长的时间),但也可能以无法预测的方式破坏系统上的内容。可以肯定的一件事是:它使系统的配置不受支持,因此无法维护-因为您实质上已经用其他任意东西覆盖了发行版中的文件。例如:
pip
安装的文件,结果也具有不可预测的作用。答案 2 :(得分:1)
通常,对于类似错误,请使用以下格式:
pip install --ignore-installed [package name]==[package version]
答案 3 :(得分:1)
阅读以上评论后,我了解到包 a 是使用 conda 安装的,而我尝试使用 pip 安装的新包 b 导致了问题。我很幸运包 b 有 conda 支持,所以使用 conda 安装包 b 解决了问题。
答案 4 :(得分:0)
我只是遇到此错误,而解决此错误的唯一方法是从site-packages
手动删除有问题的目录。
这样做之后,您可能需要使用--force-reinstall
重新安装软件包。
答案 5 :(得分:-1)
在许多情况下,一个简单的解决方法是告诉pip忽略此软件包:
pip install twilio --ignore-installed pyOpenSSL