小编典典

点子无法卸载 :“这是一个distutils安装的项目”

python

我尝试安装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吗?


阅读 224

收藏
2021-01-20

共1个答案

小编典典

此错误表示此程序包的元数据不包含属于它的文件列表。
最有可能的是,您已经通过操作系统的软件包管理器安装了此软件包,因此您也需要使用该软件包,而不是对其pip进行更新或删除。

请参阅例如升级到第10点:这是一个distutils安装的项目,因此我们无法准确确定属于该文件的文件,这只会导致部分卸载。·问题#5247·pypa /
pip
就是其中一个与软件包一起安装的示例apt


或者,根据您的需求,不使用系统Python和/或其全局环境,而是创建私有Python安装和/或环境,可能会更有效率。这里有很多选项,包括virtualenv,,venvpyenvpipenv以及从源代码将Python安装到
/usr/local$HOME/ $HOME/.local(或/opt/<whatever>)。


最后,我必须对经常建议的开关(例如在第10点和apt:如何避免distutils软件包出现“无法卸载X”错误)进行评论--ignore-installed pip

可能会 工作(可能
满足您的业务需求足够长的时间),但也可能以不可预测的方式破坏系统上的内容。可以确定的一件事是:它使系统的配置不​​受支持,因此无法维护-
因为您实质上已经用其他一些任意东西覆盖了发行版中的文件。例如:

  • 如果新文件的二进制文件与旧文件的二进制文件不兼容,则发行版中用于链接原始文件的其他软件将出现段错误或其他故障。
  • 如果新版本的文件集不同,则最终会混合使用旧文件和新文件,这可能会破坏相关软件以及软件包本身。
  • 如果以后使用OS的软件包管理器更改软件包,它将覆盖已pip安装的文件,并且结果类似。
  • 如果存在诸如配置文件之类的内容,则版本之间的差异也可能导致各种损坏。
2021-01-20