distutilsを使用してインストールされたPythonパッケージをアンインストールするにはどうすればよいですか?


92

Pythonのインストールからディレクトリを単に削除できますか、それとも削除する必要のある残留ファイルはありますか?

回答:


45

これは、渡すオプションと、システム/パッケージ内のdistutils構成ファイルのinstall内容によって異なります。これらの方法で指定されたディレクトリの外でファイルが変更されるとは思いません。

特に、現時点ではdistutilsにはアンインストールコマンドがありません

また、パッケージ/卵を削除すると、依存関係の問題が発生する可能性があることにも注意してeasy_installください。このような問題を緩和しようとするユーティリティなどです。


4
これを更新して、問題の残りのファイルの部分に直接対処できますか?
S.Lott 2008

私はそう思った-distutils設定とインストールフラグで指定されたディレクトリの外にファイルは作成されないので、これらのディレクトリには「残留」ファイルが存在します。パッケージごとに異なります。
cdleary 2008

2
@cdleary:ありがとうございます。ただし、長いコメントスレッドを追加するのではなく、回答を明確にして強化してください。
S.Lott

2
@ S.Lott:すみませんが、回答のどの部分を明確にしたいのかわかりません。具体的に説明できますか?
2009年

1
msg139773日付:2011-07-04 14:35 distutils2 / packagingが削除機能とpysetup削除コマンドを提供するようになりました。
Edward

19

インストールされ、削除する必要がある3つのものは次のとおりです。

  1. パッケージ/モジュール
  2. スクリプト
  3. データファイル

私のLinuxシステムでは、これらは次の場所にあります

  1. /usr/lib/python2.5/site-packages
  2. / usr / bin
  3. / usr / share

しかし、Windowsシステムでは、完全にPython配布ディレクトリ内にある可能性が高くなります。Linuxパターンに似ていることを除けば、私はOSXについて何も知りません。


14

別のタイムスタンプベースのハック:

  1. アンカーを作成します。 touch /tmp/ts
  2. 削除するパッケージを再インストールします。 python setup.py install --prefix=<PREFIX>
  3. アンカーファイルより新しいファイルを削除します。 find <PREFIX> -cnewer /tmp/ts | xargs rm -r

1
-1。嫌いです| xargs rm -r。各ファイルを手動で確認することをお勧めします。ext4(およびその他のファイルシステム)では、findすべてのフォルダーもリストされます。プレフィックスがだった場合は/usr削除し/usr/*ます。
Mateen Ulhaq

8

はい、distutilsがインストールしたものを単に削除しても安全です。インストールされているフォルダや.eggファイルについても同様です。当然、そのコードに依存するものはすべて機能しなくなります。

もう一度動作させたい場合は、再インストールしてください。

ちなみに、distutilsを使用している場合は、マルチバージョン機能の使用も検討してください。これにより、単一のパッケージの複数のバージョンをインストールできます。つまり、新しいバージョンをインストールするだけの場合は、パッケージの古いバージョンを削除する必要はありません。


5

ubuntu 12.04では、デフォルトで確認する必要がある場所は、

/usr/local/lib/python2.7/

そして、もしあれば、関連するフォルダとファイルを削除してください!


時々/ usr / lib / python <2.7 / 3.6>
Vineet

4

これがテストや開発の目的である場合、setuptoolsには、変更を加えるたびに更新する開発コマンドがあります(したがって、変更を加えるたびにアンインストールして再インストールする必要はありません)。また、このコマンドを使用してパッケージをアンインストールすることもできます。

これを使用すると、スクリプトとして宣言したものはすべて、残存ファイルとして残されます。


4

install --record + xargs rm

sudo python setup.py install --record files.txt
xargs sudo rm -rf < files.txt

すべてのファイルを削除し、空のディレクトリを残します。

これは理想的ではなく、パッケージの競合を回避するのに十分なはずです。

そして、必要に応じて手動でジョブを完了することができますfiles.txt。または、勇気を出して空のディレクトリの削除を自動化することもできます。

安全なヘルパーは:

python-setup-uninstall() (
  sudo rm -f files.txt
  sudo python setup.py install --record files.txt && \
  xargs rm -rf < files.txt
  sudo rm -f files.txt
)

Python 2.7.6、Ubuntu 14.04でテスト済み。



2

私はpythonパッケージをアンインストールしただけで、完全に実行したどうかはわかりませんが、自信はあります。

パッケージ内のすべてのファイルのタイムスタンプはほぼ​​同じで、他のファイルはないという前提で、日付に基づいて並べられたすべての python関連ファイルのリストを取得することから始めました。

幸いなことに、Pythonはの下にインストールされてい/opt/Python-2.6.1ます。Linuxディストリビューションに付属しているPythonを使用していた/usrとしたら、すべてを精査しなければならなかったでしょう。

次に、そのリストを調べたところ、核にしたかったすべての要素が1つのディレクトリ/opt/Python-2.6.1/lib/python2.6/site-packages/module-name/と1つのファイルで構成されていることがわかりました/opt/Python-2.6.1/lib/python2.6/site-packages/module-x.x.x_blah-py2.6.egg-info

だから私はそれらを削除しました。

これは、日付でソートされたファイルのリストを取得する方法です。

find "$@" -printf '%T@ ' -ls | sort -n | cut -d\ -f 2-

(ちなみに、それはGNUの「検索」である必要があると思います。OSXで得られるフレーバーは、「-printf '%T @'」について知りません。)

私はそれを使用するすべての時間。


2

Windows 7の場合

コントロールパネル->プログラム->アンインストール

、その後

削除するpythonパッケージを選択します。


@Mauricio私はリストに古いバージョンを表示していませんが、site-packagesにeggファイルを表示できます。これは問題ですか?

1

Mac OSXでは、pathToPython / site-packages /の下にある次の2つのディレクトリを手動で削除します。

  • {パッケージ名}
  • {packageName}-{version} -info

たとえば、distutilsでインストールされたプロジェクトであるpyasn1を削除するには:

  • rm -rf lib / python2.7 / site-packages / pyasn1
  • rm -rf lib / python2.7 / site-packages / pyasn1-0.1.9-py2.7.egg-info

サイトパッケージの場所を確認するには:

python -m site

1
期待どおりに動作します。
c1377554

-1

ERROR: flake8 3.7.9 has requirement pycodestyle<2.6.0,>=2.5.0, but you'll have pycodestyle 2.3.1 which is incompatible. ERROR: nuscenes-devkit 1.0.8 has requirement motmetrics<=1.1.3, but you'll have motmetrics 1.2.0 which is incompatible. Installing collected packages: descartes, future, torch, cachetools, torchvision, flake8-import-order, xmltodict, entrypoints, flake8, motmetrics, nuscenes-devkit Attempting uninstall: torch Found existing installation: torch 1.0.0 Uninstalling torch-1.0.0: Successfully uninstalled torch-1.0.0 Attempting uninstall: torchvision Found existing installation: torchvision 0.2.1 Uninstalling torchvision-0.2.1: Successfully uninstalled torchvision-0.2.1 Attempting uninstall: entrypoints Found existing installation: entrypoints 0.2.3 ERROR: Cannot uninstall 'entrypoints'. 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.

次に、次のように入力します。

conda uninstall entrypoints pip install --upgrade pycodestyle pip install nuscenes-devkit

できた!


1
コンソールの出力だけを表示するのではなく、何をしているのか、なぜ説明するのかを試してみてください。
ヘッドハンターXamd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.