でpythonパッケージをインストールしましたpython setup.py install
。
アンインストールするにはどうすればよいですか?
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.
ため、これはまだ問題です。
でpythonパッケージをインストールしましたpython setup.py install
。
アンインストールするにはどうすればよいですか?
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.
ため、これはまだ問題です。
回答:
注:使用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'
cat files.txt | xargs sudo rm -rf
私にとっては、次のものがほとんど機能します:
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
上記の内容はすべて適用されますが、いずれにしても、現在利用できる小さな変更があります。
最近のpythonバージョンには、ensurepip
オフラインでもpipをインストールできるパッケージが付属しています。
$ python -m Ensurepip --upgrade
一部のシステム(Debian Jessieなど)では、これは使用できません(システムのpythonインストールの破損を防ぐため)。
grep
またはを使用するfind
上記の例では、grep
インストール済みであることを前提としています。私は(マシンにMS Windowsがあった時点で)Linuxユーティリティ(grepを含む)のセットをインストールしていました。または、ネイティブMS Windowsを使用するfind
か、そのフィルタリングを無視して、検出されたpythonパッケージの少し長いリストで名前を見つけます。
distutils
、distribute
、など...)
setuptools
。あなたはbitbucket.org/vlcinsky/ttr.aws.utils.s3をチェックするかもしれません(これは完璧ではありません)。とにかく、名前空間パッケージの使用にはかなり不満があります。目に見える理由なしに、インポートが失敗することがあります。しかし、それは別の話です。
setuptools
、実際は使用していますdistribute
。別の教訓:pypiから自分のパッケージをインストールし、同じ名前空間をローカルで共有する別のパッケージを開発する予定の場合は $ pip install <the package>
、を使用$ easy_install <the package>
しないでください。使用しないと、開発パッケージをインポートするときに競合が発生します。
easy_install --user --prefix=$HOME pip
です。次に、PATHに次を追加しました:ln -s /home/tflutre/.local/bin/pip ~/bin
、ln -s /home/tflutre/.local/bin/pip2.7 ~/bin
およびln -s /home/tflutre/.local/bin/pip2 ~/bin
。
pip uninstall module
または機能するpython -m pip uninstall module
はずです。また、Pythonの一部であるように、クロスプラットフォームである必要があります。
#1の答えには問題があります。
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ページを参照してください。
OIFS=$IFS; IFS=$'\n'; FILES=( $( cat files.txt ) ); IFS=$OIFS; sudo rm -rf "${FILES[@]}"
printf
文字列にeg %
または文字が含まれている場合、のフォーマット文字列内に変数を埋め込むと失敗します\
。常にフォーマット文字列を提供します:( printf '%s\0' "$line"
エコーも回避します)。さらに使用するだけでループをさらに回避できますがtr '\n' '\0' < files.txt | xargs -0 rm -f
まず、インストールしたファイルを記録します。以前に実行したことがある場合でも、このコマンドを繰り返すことができますsetup.py install
。
python setup.py install --record files.txt
アンインストールする場合は、次のことができます。
sudo rm $(cat files.txt)
これは、rmコマンドが削除するファイルの空白で区切られたリストを取得し、インストールレコードがそのようなリストであるため機能します。
これで、Pythonはインストールpip
中にインストールする選択肢を提供します(私はWindowsを使用していますが、少なくともWindowsではpythonを使用しています)。pip
Pythonのインストール中にインストールすることを選択したことを考慮して(デフォルトであるので実際に選択する必要はありません)、pip
すでにインストールされています。次に、pip
コマンドプロンプトに入力すると、ヘルプが表示されます。そこで必要な使用方法を見つけることができます。たとえばpip list
、インストールされているパッケージのリストが表示されます。使用できます
pip uninstall package_name
不要になったパッケージをアンインストールします。詳細はこちら(pipのドキュメント)をご覧ください。
遅延方法:配布パッケージを作成した後で最初に再インストールする場合は、Windowsインストールメニュー(Windowsを使用している場合)またはrpmコマンドからアンインストールするだけです。
例えば、
python setup.py bdist_wininst
dist/foo-1.0.win32.exe
(「foo」はもちろん例です)。
Pythonパッケージディレクトリに移動し、.eggファイルを削除します。例:Python 2.5(ubuntu)の場合:/usr/lib/python2.5/site-packages/
Python 2.6(ubuntu)の場合:/usr/local/lib/python2.6/dist-packages/
おそらくあなたは代替策としてこれを行うことができます:-
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
これは私のために働きました。そして、私は私を悩ませていたパッケージをアンインストールすることができました:)
私は、setup.pyを開いてパッケージ名を見つけ、pipにアンインストールを依頼できると思います。
名前が「METADATA」変数で使用できると仮定します。
pip uninstall $(python -c "from setup import METADATA; print METADATA['name']")
マーティンの発言を拡張して、インストール出力と小さなbashスクリプトを記録することで、非常にうまくうまくいきます。これが私がすることです...
for i in $(less install.record);
sudo rm $i;
done;
そしてプレスト。アンインストール。
sudo xargs rm -v < install.record
です。
パッケージの再インストール後に削除されるはずのファイルがまだある場合build
は、フォルダーも削除されていることを確認してください。したがって、それpkg
が削除するパッケージであると仮定します。
rm -r $(python3 -c "import pkg; print(pkg.__path__[0] + '*' )")
rm -rf build
上記のpython3の作業を行い、パッケージとその* .egg-infoファイルを削除します
過去のある時点で、「python setup.py install」を誤ってグローバル環境で実行していたため、アンインストールが非常に困難でした。これらの解決策は役に立たなかった。「pip uninstall」は「「splunk-appinspect」をアンインストールできません。アンインストールするファイルが見つかりませんでした。」では機能しませんでした。「sudo pip uninstall」が機能しなかった「要件splunk-appinspectをアンインストールできない、インストールされていない」。pipのアンインストール、pipキャッシュの削除、ハードドライブのパッケージの検索などを試みました...
「pip show」は最終的に私をソリューションに導き、「Location:」はディレクトリを指しており、そのディレクトリの名前を変更すると、パッケージがpipのリストから削除されました。ディレクトリの名前を元に戻しましたが、pipのリストに表示されませんでした。今、virtualenvにパッケージを再インストールできます。
私はpython setup.py install
PyCharmで1回実行したことがあり、すべてのパッケージをcondaベース環境にインストールします。後でこれらのパッケージをすべて削除したい場合、pip uninstall
機能しません。/anaconda3/lib/python3.7/site-packagesから手動で削除する必要がありました:(
したがって、requirements.txtファイルを書き込む代わりにsetup.pyを使用する理由がわかりません。要件ファイルは、仮想環境にパッケージをインストールするために使用でき、システムのpythonパッケージを混乱させることはありません。
次のように、bashを使用してコマンドを読み取り、関連するファイルを削除することをお勧めします。
sudo python setup.py install --record files.txt
sudo bash -c "cat files.txt | xargs rm -rf"
pip uninstall <your_package>
ます。stackoverflow.com/questions/1231688/…を参照してください。