python setup.py uninstall


786

でpythonパッケージをインストールしましたpython setup.py install

アンインストールするにはどうすればよいですか?


52
受け入れられた回答は古くなっています。を使用しpip uninstall <your_package>ます。stackoverflow.com/questions/1231688/…を参照してください。
ヨアヒムW

21
pip uninstallはもはや有効な答えではありません。これが証明です。[sri @ localhost python] $ pip uninstall foo非推奨:distutilsでインストールされたプロジェクト(foo)のアンインストールは非推奨になり、将来のバージョンでは削除される予定です。これは、distutilsプロジェクトをアンインストールしても、プロジェクトが部分的にしかアンインストールされないためです。
shrewmouse 2015年

もう表示されない@shrewmouse。
JCロカモンデ2018年

@JCRocamonde私が作成したパッケージでは、pipの最新バージョンが表示される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.ため、これはまだ問題です。
Josh

setup.pyファイルの上部にある@Joshは、「from distutils.core import setup」ではなく「from setuptools import setup」を実行します。
-bigjake

回答:


976

注:使用python setup.py installは避けてくださいpip install .

すべてのファイルを手動で削除する必要があります。また、インストールによって手動で行われたその他の操作を元に戻す必要もあります。

すべてのファイルのリストがわからない場合は、--recordオプションで再インストールして、生成されるリストを確認できます。

インストールされたファイルのリストを記録するには、以下を使用できます。

python setup.py install --record files.txt

アンインストールする場合は、xargsを使用して削除できます。

xargs rm -rf < files.txt

または、Windowsを実行している場合は、Powershellを使用します。

Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}

次に、それを含むディレクトリも削除/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/macOSます(例:)。ファイルはありませんが、Pythonは空のモジュールをインポートします。

>>> import my_module
>>> my_module.__file__
None

削除すると、Pythonは次のように表示します。

>>> import my_module
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'my_module'

6
これは仕事をしない場合、次のように、sudoを追加しますcat files.txt | xargs sudo rm -rf
saroele

21
これはスペースのあるファイルを台無しにするでしょう。以下の私の答えを参照してください:stackoverflow.com/a/25209129/14456
Ian Kelling '

1
setup.pyを使用するソースコードがあるパッケージを再インストールするにはどうすればよいですか?
アレックス

5
これにより、代わりに空のディレクトリが残ります。
ディラワー

3
こんにちは、私は猫のfiles.txtを試すときにいくつかのファイルについてあなたの提案を試しました| xargs rm -rf sudoモードでも、たとえば/ usr / local / bin / pydocまたは/ usr / local / bin / idleの場合でも、アクセス権が拒否されたと表示されます。

212

私にとっては、次のものがほとんど機能します:

pipがインストールされている。例:

$ easy_install pip

チェック、インストールされたパッケージはpipの観点からどのように命名されていますか?

$ pip freeze

これにより、インストールされている(およびpipによって検出された)すべてのパッケージの名前がリストされます。名前は長い場合があり、次に表示されるパッケージの名前だけを使用します#egg=。ほとんどの場合、バージョンの部分を無視することもできます(以下の==いずれかまたは-)。

次に、パッケージをアンインストールします。

$ pip uninstall package.name.you.have.found

パッケージの削除について確認を求められたら、あなたは幸運な人であり、削除されます。

pipは、pipによってインストールされたすべてのパッケージを検出します。また、easy_installまたはsetup.pyを介してインストールされたほとんどのパッケージを検出しますが、これがまれに失敗する場合があります。

これはttr.rdstmc、MS Windowsで名前が付けられたパッケージを使用したローカルテストの実際のサンプルです。

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev

$ python setup.py develop
.....
.....
Finished processing dependencies for ttr.rdstmc==0.0.1dev

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
-e hg+https://vlcinsky@bitbucket.org/vlcinsky/ttr.rdstmc@d61a9922920c508862602f7f39e496f7b99315f0#egg=ttr.rdstmc-dev
ttr.utcutils==0.1.1dev

$ pip uninstall ttr.rdstmc
Uninstalling ttr.rdstmc:
  c:\python27\lib\site-packages\ttr.rdstmc.egg-link
Proceed (y/n)? y
  Successfully uninstalled ttr.rdstmc

$ pip freeze |grep ttr
ttr.aws.s3==0.1.1dev
ttr.aws.utils.s3==0.3.0
ttr.utcutils==0.1.1dev

2015-05-20を編集

上記の内容はすべて適用されますが、いずれにしても、現在利用できる小さな変更があります。

Python 2.7.9とPython 3.4にpipをインストールする

最近のpythonバージョンには、ensurepipオフラインでもpipをインストールできるパッケージが付属しています。

$ python -m Ensurepip --upgrade

一部のシステム(Debian Jessieなど)では、これは使用できません(システムのpythonインストールの破損を防ぐため)。

grepまたはを使用するfind

上記の例では、grepインストール済みであることを前提としています。私は(マシンにMS Windowsがあった時点で)Linuxユーティリティ(grepを含む)のセットをインストールしていました。または、ネイティブMS Windowsを使用するfindか、そのフィルタリングを無視して、検出されたpythonパッケージの少し長いリストで名前を見つけます。


1
これを機能させるためにどのパッケージツール/バージョンを使用していますか?(distutilsdistribute、など...)
チロSantilliは、冠状病毒审查六四事件法轮功

1
使用しますsetuptools。あなたはbitbucket.org/vlcinsky/ttr.aws.utils.s3をチェックするかもしれません(これは完璧ではありません)。とにかく、名前空間パッケージの使用にはかなり不満があります。目に見える理由なしに、インポートが失敗することがあります。しかし、それは別の話です。
Jan Vlcinsky 2013年

1
自分を修正します。インポートしていてもsetuptools、実際は使用していますdistribute。別の教訓:pypiから自分のパッケージをインストールし、同じ名前空間をローカルで共有する別のパッケージを開発する予定の場合は $ pip install <the package>、を使用$ easy_install <the package>しないでください。使用しないと、開発パッケージをインポートするときに競合が発生します。
Jan Vlcinsky 2013年

1
他人を助けるために:私はrootではないので、家にすべてをインストールします。これが私がしたことeasy_install --user --prefix=$HOME pipです。次に、PATHに次を追加しました:ln -s /home/tflutre/.local/bin/pip ~/binln -s /home/tflutre/.local/bin/pip2.7 ~/binおよびln -s /home/tflutre/.local/bin/pip2 ~/bin
tflutre 2014

3
これははるかに簡単で、pipは通常Pythonに付属しているので、これは受け入れられるべき答えです。コマンドプロンプト/ターミナルでの使用は簡単です- pip uninstall moduleまたは機能するpython -m pip uninstall moduleはずです。また、Pythonの一部であるように、クロスプラットフォームである必要があります。
Edward

81

#1の答えには問題があります。

  • Macでは動作しません。
  • スペースやその他の特殊文字を含むファイルがインストールされている場合、xargsコマンドは失敗し、個々の単語に一致したファイル/ディレクトリは削除されます。
  • -r中にはrm -rf不要であり、最悪の場合、あなたがしたくないものを削除することができます。

代わりに、unixのような場合:

sudo python setup.py install --record files.txt
# inspect files.txt to make sure it looks ok. Then:
tr '\n' '\0' < files.txt | xargs -0 sudo rm -f --

そしてウィンドウの場合:

python setup.py bdist_wininst
dist/foo-1.0.win32.exe

アンインストールには解決できない問題もあります setup.py、通常の場合に邪魔にならないインストールにはます。より完全な回答については、次のWikiページを参照してください。

https://ofswiki.org/wiki/Uninstalling_setup.py_install


3
なぜあなたは賛成投票の下に提案を残さないのですか?これらの「深刻な問題」は、まれなケースに関するものであることに注意してください。
lpapp

17
賛成票にコメントを残しました。私のコメントは、非常に少数の人々がクリックする「他のコメントを読み込む」リンクの下に埋もれています。言いたいことがたくさんあるので、私も自分で答えを出しました。私の答えの中のリンク。また、コーナーケースは、ファイルにスペースが含まれているときに頭に浮かぶ最初の用語ではありません。
イアンケリング2014

それは価値があるので、これは改行を含むファイル名では失敗すると思います:)パッケージのメンテナがその悪であるかどうかにかかわらず、私は決して見つけられないことを願っています。
ジャックオコナー

2
OS X Mavericksでは、少なくとも、xargsには-dオプションがありません。どうして?アップルがあなたを愛しているからです。とにかくこれは上記と同じ効果があり、スペースなどで安全です。ただし、Bash固有です。--record to files.txtでインストールを実行した後:OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"
Joseph Sikorski

2
@IanKelling printf文字列にeg %または文字が含まれている場合、のフォーマット文字列内に変数を埋め込むと失敗します\。常にフォーマット文字列を提供します:( printf '%s\0' "$line"エコーも回避します)。さらに使用するだけでループをさらに回避できますがtr '\n' '\0' < files.txt | xargs -0 rm -f
geirha

39

まず、インストールしたファイルを記録します。以前に実行したことがある場合でも、このコマンドを繰り返すことができますsetup.py install

python setup.py install --record files.txt

アンインストールする場合は、次のことができます。

sudo rm $(cat files.txt)

これは、rmコマンドが削除するファイルの空白で区切られたリストを取得し、インストールレコードがそのようなリストであるため機能します。


インストールしたのが自分のプログラムかどうかだけでなく、それ以降、他のアプリケーションがこのリソースを使用していないかどうかを確認する方法はありますか?たとえば、私はツールをインストールしました、それを行うには、いくつかのライブラリをインストールしなければなりませんでした、おそらくそれらのいくつかはすでにインストールされています(つまり、アンインストールプロセスでは削除できません)だけでなく、他のアプリケーションの何も削除できません私のライブラリが最初にインストールされていたので...インストールされていませんでした
ガブリエル

19

これで、Pythonはインストールpip中にインストールする選択肢を提供します(私はWindowsを使用していますが、少なくともWindowsではpythonを使用しています)。pipPythonのインストール中にインストールすることを選択したことを考慮して(デフォルトであるので実際に選択する必要はありません)、pipすでにインストールされています。次に、pipコマンドプロンプトに入力すると、ヘルプが表示されます。そこで必要な使用方法を見つけることができます。たとえばpip list、インストールされているパッケージのリストが表示されます。使用できます

pip uninstall package_name

不要になったパッケージをアンインストールします。詳細はこちら(pipのドキュメント)をご覧ください


8

遅延方法:配布パッケージを作成した後で最初に再インストールする場合は、Windowsインストールメニュー(Windowsを使用している場合)またはrpmコマンドからアンインストールするだけです。

例えば、

python setup.py bdist_wininst
dist/foo-1.0.win32.exe

(「foo」はもちろん例です)。


4
私はそれが好きかどうかはわかりませんが、あなたは正直な考え方のポイントを取得します。:)
Lennart Regebro、2009年

正直なところ、どちらが「怠惰な方法」かはわかりません;-)しかし、より「標準的な」インストーラーを作成することは可能だと言ったと思います。奇妙なことに、setup.pyがパッケージを削除するためのクリーンな方法を提供していません。
RedGlyph 2009年

1
アンインストールには、インストールされたパッケージとそのファイルの集中化されたレジストリが必要ですが、それはありません。この話をどのように改善するかについて議論が進んでおり、Python 2.7 / 3.2または2.8 / 3.3程度で解決される可能性があります。
Lennart Regebro、2009年

1
@Lennart:少なくともPython 2.8はないでしょう。それが現在の公式声明です
Piotr Owsiak

2
@PiotrOwsiak:はい、しかしそれは当時の声明ではありませんでした。2.8はその時点でまだ可能性があり、PEP 404が承認されるまで、去年の終わりまでそうであったと思います。
Lennart Regebro 2012

6

Pythonパッケージディレクトリに移動し、.eggファイルを削除します。例:Python 2.5(ubuntu)の場合:/usr/lib/python2.5/site-packages/

Python 2.6(ubuntu)の場合:/usr/local/lib/python2.6/dist-packages/


1
インストールされているsetuptoolsやeasy_installコマンドのように、パッケージの外にインストールされたファイルをインストールしない限り、機能します。
Lennart Regebro、2009年

3
通常、パッケージがOPの指定どおりにpython setup.pyを使用してインストールされた場合、卵はありません。OTOH、easy_installが使用されたために存在する場合、パッケージをアンインストールするための文書化された方法は、eggファイルを削除する前にeasy_install -mを使用することです。そうしないと、easy-install.pthファイルに卵の殻が残る場合があります。
ネッドデイリー

5

質問に正確に答えるのではなく、毎日私に役立つもの:

パッケージをインストールする

pip install .

これにより、パッケージがに配置され$HOME/.localます。でアンインストール

pip uninstall <package_name>

1
pip unistall .うまくいきませんpip uninstall <package_name>でしたが、うまくいきました。
Danijel

4

おそらくあなたは代替策としてこれを行うことができます:-

1)Pythonバージョンを取得する-

[linux machine]# python
Python 2.4.3 (#1, Jun 18 2012, 14:38:55) 

->上記のコマンドは、現在のPythonバージョン2.4.3を提供します

2)pythonのインストールディレクトリを取得します。

[linux machine]# whereis python
python: /usr/bin/python /usr/bin/python2.4 /usr/lib/python2.4 /usr/local/bin/python2.5 /usr/include/python2.4 /usr/share/man/man1/python.1.gz

->上記のコマンドから、インストールディレクトリを取得できます-/ usr/lib/python2.4/site - packages

3)ここから、パッケージとpython eggファイルを削除できます

[linux machine]# cd /usr/lib/python2.4/site-packages
[linux machine]# rm -rf paramiko-1.12.0-py2.4.egg paramiko-1.7.7.1-py2.4.egg paramiko-1.9.0-py2.4.egg

これは私のために働きました。そして、私は私を悩ませていたパッケージをアンインストールすることができました:)


3

私は、setup.pyを開いてパッケージ名を見つけ、pipにアンインストールを依頼できると思います。

名前が「METADATA」変数で使用できると仮定します。

pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")

1

マーティンの発言を拡張して、インストール出力と小さなbashスクリプトを記録することで、非常にうまくうまくいきます。これが私がすることです...

for i in $(less install.record);
sudo rm $i;
done;

そしてプレスト。アンインストール。


2
これをと書く方がはるかに簡単sudo xargs rm -v < install.recordです。
poolie 2013年

1

パッケージの再インストール後に削除されるはずのファイルがまだある場合buildは、フォルダーも削除されていることを確認してください。したがって、それpkgが削除するパッケージであると仮定します。

rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )") 
rm -rf build

上記のpython3の作業を行い、パッケージとその* .egg-infoファイルを削除します


1

at {virtualenv}/lib/python2.7/site-packages/(virtualenvを使用していない場合{system_dir}/lib/python2.7/dist-packages/

  • 卵ファイルを削除します(例distribute-0.6.34-py2.7.egg
  • from fileがある場合はeasy-install.pth、対応する行を削除します(これは、ソースディレクトリへのパスまたはeggファイルのパスである必要があります)。

0

過去のある時点で、「python setup.py install」を誤ってグローバル環境で実行していたため、アンインストールが非常に困難でした。これらの解決策は役に立たなかった。「pip uninstall」は「「splunk-appinspect」をアンインストールできません。アンインストールするファイルが見つかりませんでした。」では機能しませんでした。「sudo pip uninstall」が機能しなかった「要件splunk-appinspectをアンインストールできない、インストールされていない」。pipのアンインストール、pipキャッシュの削除、ハードドライブのパッケージの検索などを試みました...

「pip show」は最終的に私をソリューションに導き、「Location:」はディレクトリを指しており、そのディレクトリの名前を変更すると、パッケージがpipのリストから削除されました。ディレクトリの名前を元に戻しましたが、pipのリストに表示されませんでした。今、virtualenvにパッケージを再インストールできます。


0

私はpython setup.py installPyCharmで1回実行したことがあり、すべてのパッケージをcondaベース環境にインストールします。後でこれらのパッケージをすべて削除したい場合、pip uninstall機能しません。/anaconda3/lib/python3.7/site-packagesから手動で削除する必要がありました:(

したがって、requirements.txtファイルを書き込む代わりにsetup.pyを使用する理由がわかりません。要件ファイルは、仮想環境にパッケージをインストールするために使用でき、システムのpythonパッケージを混乱させることはありません。


-1

次のように、bashを使用してコマンドを読み取り、関連するファイルを削除することをお勧めします。

sudo python setup.py install --record files.txt
sudo bash -c "cat files.txt | xargs rm -rf"

これは既存の以前の回答のコピーです。
Karl Richter、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.