web-dev-qa-db-ja.com

pipは<package>をアンインストールできません:「distutilsがインストールされたプロジェクトです」

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をアンインストールする方法を知っていますか?

16
rachelvsamuel

このエラーは、このパッケージのメタデータに含まれるファイルのリストが含まれていないことを意味します。 ほとんどの場合、OSのパッケージマネージャーを介してこのパッケージをインストールしているため、pipではなくそれを使用して更新または削除する必要があります。

例参照 pip 10へのアップグレード:distutilsがインストールされたプロジェクトであるため、どのファイルがそのプロジェクトに属しているかを正確に判断できず、部分的なアンインストールのみにつながります。・問題#5247・pypa/pip そのような例パッケージがaptでインストールされた場所。


あるいは、必要に応じて、システムPythonおよび/またはそのグローバル環境を使用せず、プライベートPythonインストールおよび/または環境を作成する方が生産性が高い場合があります。ここにはvirtualenvvenvpyenvpipenvを含む多くのオプションがあり、Pythonをソースから/usr/localまたは$HOME/$HOME/.local(または/opt/<whatever>)にインストールします。


最後に、よく提案される(たとえば pip 10 and apt:distutilsパッケージの「Cannot uninstall X」エラーを回避する方法 )についてコメントする必要があります。--ignore-installedpipスイッチ。

それは動作する可能性があります(潜在的にビジネスニーズに十分な時間)、しかし同様に予測不可能な方法でシステムの物事を壊すかもしれません。確かなことは、システムの構成がサポートされていないため、メンテナンスできないことです。これは、ディストリビューションのファイルを他の任意のもので本質的に上書きしているためです。例えば。:

  • 新しいファイルが古いファイルとバイナリの互換性がない場合、オリジナルとリンクするために構築されたディストリビューションの他のソフトウェアがセグメンテーションフォールトまたは誤動作します。
  • 新しいバージョンのファイルのセットが異なる場合、古いファイルと新しいファイルが混在することになり、依存ソフトウェアとパッケージ自体が破損する可能性があります。
  • 後でOSのパッケージマネージャーでパッケージを変更すると、pip- installedファイルが上書きされ、同様に予測できない結果が生じます。
  • 構成ファイルのようなものがある場合、バージョン間のそれらの違いもあらゆる種類の破損につながる可能性があります。
21
ivan_pozdeev