1. ホーム
  2. python

[解決済み] pip は <パッケージ> をアンインストールできません: "It is a distutils installed project".

2023-04-21 23:03:16

質問

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をアンインストールする方法をご存知の方いらっしゃいますか?

どのように解決するのですか?

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

参照:例 pip 10にアップグレードしています。これは distutils がインストールされたプロジェクトであるため、どのファイルがそれに属するかを正確に判断することができず、部分的なアンインストールにしかなりません。- 問題番号 5247 - pypa/pip でインストールされたパッケージの例です。 apt .


あるいは、ニーズによっては、システムのPythonおよび/またはそのグローバル環境を使用せず、プライベートなPythonのインストールおよび/または環境を作成することがより生産的であるかもしれません。ここには以下のような多くのオプションがあります。 virtualenv , venv , pyenv , pipenv に、Pythonをソースからインストールし /usr/local または $HOME / $HOME/.local (または /opt/<whatever> ).


最後に、よく提案される (たとえば at pip 10 と apt: distutils パッケージの "Cannot uninstall X" エラーを回避する方法 ) --ignore-installed pip というスイッチがあります。

それは かもしれない

は動作するかもしれませんが (潜在的にはビジネス上の必要性から十分長い間)、それと同じくらい、予測不可能な方法でシステム上のものを破壊する可能性があります。ひとつ確かなことは、システムの構成がサポートされなくなり、その結果メンテナンスができなくなるということです。例えば

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