rac*_*uel 19 python distutils pip
我试着安装Twilio模块:
sudo -H pip install twilio
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
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.
Run Code Online (Sandbox Code Playgroud)
有谁知道如何卸载pyOpenSSL?
小智 34
我遇到了同样的错误,并能够使用以下步骤解决:
pip install --ignore-installed pyOpenSSL
Run Code Online (Sandbox Code Playgroud)
这将安装最新版本的软件包,然后如果您尝试安装,
pip install twilio
Run Code Online (Sandbox Code Playgroud)
它会起作用。
iva*_*eev 24
此错误表示此程序包的元数据不包含属于它的文件列表.最有可能的是,您已经通过操作系统的软件包管理器安装了此软件包,因此您需要使用它而不是pip
更新或删除它.
参见例如升级到pip 10:这是一个安装了distutils的项目,因此我们无法准确确定哪些文件属于它,这将导致仅部分卸载.·问题#5247·pypa/pip用于安装软件包的一个这样的例子apt
.
或者,根据您的需要,不使用您的系统Python和/或其全局环境但创建私有Python安装和/或环境可能会更高效.有很多选择,这里包括virtualenv
,venv
,pyenv
,pipenv
和从源代码安装Python的进入
/usr/local
或$HOME
/ $HOME/.local
(或/opt/<whatever>
).
最后,我必须评论经常建议的(例如,在pip 10和apt:如何避免"无法卸载X"的distutils包错误)--ignore-installed
pip
切换.
它可能有效(可能需要足够长的时间来满足您的业务需求),但也可能以不可预测的方式破坏系统上的内容.有一件事是肯定的:它使系统的配置不受支持,因而无法维护 - 因为你基本上用你的其他任意东西覆盖了你的发行版中的文件.例如:
pip
安装的文件,但结果类似的不可预测.一般来说,对于类似的错误,使用这种格式:
pip install --ignore-installed [package name]==[package version]
Run Code Online (Sandbox Code Playgroud)
就我而言,我使用以下命令从内部 git 安装一个包:
python -m pip install package.whl --force
Run Code Online (Sandbox Code Playgroud)
我这样做是因为我不想明确卸载以前的版本并用新版本替换它。但它还做的是再次安装所有依赖项。我在其中一个包中收到错误。删除--force
解决了问题。
我想补充一下,我--ignore-installed
也曾为我工作过。在我的例子中,删除--force
本质上是做同样的事情。