pip install --userでインストールされたパッケージをアンインストールする方法


219

--userユーザーごとにPythonパッケージをインストールできるpipのオプションがあります。

pip install --user [python-package-name]

このオプションを使用して、ルートアクセス権がないサーバーにパッケージをインストールしました。現在必要なのは、現在のユーザーにインストールされているパッケージをアンインストールすることです。私はこのコマンドを実行しようとしました:

pip uninstall --user [python-package-name]

しかし、私は得ました:

no such option: --user

でインストールしたパッケージをpip install --user手動で見つけて削除する以外に、どうすればアンインストールできますか?

この記事を見つけました

pipはユーザーごとのサイトパッケージディレクトリからアンインストールできません

ユーザーディレクトリからのパッケージのアンインストールはサポートされていないことを示しています。記事によれば、それが正しく実装されていれば、

pip uninstall [package-name]

インストールされたパッケージは、ユーザーディレクトリでも検索されます。しかし、私にはまだ問題が残っています。同じパッケージがシステム全体とユーザーごとの両方にインストールされた場合はどうなりますか?誰かが特定のユーザーディレクトリをターゲットにする必要がある場合はどうなりますか?


1
いいえ、user:groupごとに1つのvirtualenvを設定し、それを含むフォルダーに適切なシステム権限を与える必要があります。
danius

3
すべてのユーザーに対してシステム全体にパッケージをインストールし、一部のユーザーに対して選択的にアンインストールする方法はありません。パッケージがそのまま--userインストールされている場合、アンインストールせず--userにアンインストールすると、必要な処理が実行されます。
Tripleee、2015年

@tripleee:私はシステム全体に権限を持っていないので、現在のユーザーごとにアンインストールする必要があるだけです
Serjik

1
削除する権限がないディレクトリを見つけ、その権限を修正するか、手動で横に移動します。
Tripleee、2015年

回答:


196

LinuxでPython 3.5とpip 7.1.2を使用してこれをテストすると、状況は次のようになります。

  • pip install --user somepackageにインストールし$HOME/.local、それをアンインストールすると、を使用して機能しpip uninstall somepackageます。

  • これは、somepackageシステム全体に同時にインストールされているかどうかにかかわらず当てはまります。

  • パッケージが両方の場所にインストールされている場合は、ローカルのパッケージのみがアンインストールされます。を使用してシステム全体のパッケージをアンインストールするにはpip、まずローカルでアンインストールしてから、同じアンインストールコマンドをroot特権を使用して再度実行します。

  • 事前定義されたユーザーインストールディレクトリに加えて、pip install --target somedir somepackageはパッケージをにインストールしますsomedir。を使用して、そのような場所からパッケージをアンインストールする方法はありませんpip。(ただし、Githubには、を実装する、やや古いマージされていないプルリクエストがありますpip uninstall --target。)

  • pipアンインストールする場所はシステム全体で定義済みのユーザーローカルだけなのでpip uninstall、特定のユーザーのローカルインストールディレクトリからアンインストールするには、それぞれのユーザーとして実行する必要があります。


2
これらのステートメントは、仮想環境内でpipを実行するのに正確ですか?
kbolino

私の場合、pip 9.0.1でアンインストールが機能しませんでした。パッケージはまだHOME /./ localにインストールされています
Genom

2
ポイント2は私のシステムでは正しくないようです。にシステムパッケージをjediインストールしてい/usr/lib64/python2.7/site-packages/ます。私がそうするとき、通常のユーザーとして:pip install --user jedi そしてpip uninstall jedi、pipはアンインストール/usr/lib64/python2.7/site-packages/jediを試みてからでキックアウトしPermission deniedます。あれば--userアンインストールコマンドのために存在していない、どのように私は、アンインストール教えてくださいませんアンインストールしようとし/usr/lib64/python2.7/site-packages/jediたが~/.local/lib64/python3.6/site-packages/jedi
AstroFloyd

ここ@AstroFloydとまったく同じ
Nikana Reklawyks

28

MacOSでパッケージ 'oauth2client'をアンインストールする例:

pip uninstall oauth2client

9

ただし、pip install --user some_pkg 仮想環境内で使用する場合は注意してください。

$ path/to/python -m venv ~/my_py_venv
$ source ~/my_py_venv/bin/activate
(my_py_venv) $ pip install --user some_pkg
(my_py_venv) $ pip uninstall some_pkg
WARNING: Skipping some_pkg as it is not installed.
(my_py_venv) $ pip list
# Even `pip list` will not properly list the `some_pkg` in this case

この場合、現在の仮想環境非アクティブ化してから、対応するpython/ pip実行可能ファイルを使用して、ユーザーサイトパッケージを一覧表示またはアンインストールする必要があります。

(my_py_venv) $ deactivate
$ path/to/python -m pip list
$ path/to/python -m pip uninstall some_pkg

この問題は数年前に報告されたことに注意してください。そして、現在の結論は次のようです:ユーザーの場所は仮想環境にとって実際には意味がないため、仮想環境--user内では無効ですpip


3
遅すぎる!、私--userは仮想pip list
環境

2
「そして、現在の結論は次のようです:--userは仮想環境のpip内では無効です。ユーザーの場所は仮想環境に対して実際には意味がないためです。」同意した。ユーザーがインストールすると、仮想環境の目的全体が無効になります。残念なことに、これをやっている人々の悪い例がたくさんあります。
Stephen Bosch

5

--userフラグでインストールされたパッケージをアンインストールすることは可能だと思います。これは私のために働いた。

pip freeze --user | xargs pip uninstall -y

Python 3の場合。

pip3 freeze --user | xargs pip3 uninstall -y

しかし、どういうわけか、これらのコマンドはsetuptoolsとpipをアンインストールしません。これらのコマンドの後に(本当にクリーンなpythonが必要な場合)、次のコマンドで削除できます。

pip uninstall setuptools && pip uninstall pip


2
これは私にとってうまくいったエレガントなソリューションです。
Stephen Bosch

2

答えはまだ不可能です。手動で削除する必要があります。


パッケージのインストール中に、トレースバックがありました。その後、アンインストールが機能しませんでした。
サイアム2017年

特定のパッケージにインストールされているすべてのファイルを一覧表示するにはどうすればよいですか(削除できるように)?
AstroFloyd

pipは外部コードを実行するsetup.pyを実行するため、事実上不可能です。setup.pyが完全に削除されるまで、そのことを忘れてしまいます。おそらく2022年までにはそうなるでしょう。
ソリン

2

@ thomas-lotzeが述べたように、現在対応する--userオプションがないため、pipツールはそれを行いません。しかし、私が見つけたのは、〜/ .local / binをチェックインして、--userオプションに対応するように見える特定のpip#。#を探すことができるということです。

私の場合:

antho@noctil: ~/.l/bin$ pwd
/home/antho/.local/bin
antho@noctil: ~/.l/bin$ ls pip*
pip  pip2  pip2.7  pip3  pip3.5

次に、特定のpipバージョンでアンインストールします。


stackoverflow.com/a/11250821/14420バスのアンインストールのレシピを確認するには、たとえば./pip2 freeze | grep -v "^-e" | xargs pip uninstall -y編集可能モードでインストールされたパッケージを除くすべてのもの
マットウィルキー

0

Anacondaバージョン4.3.22とpython3.6.1環境を実行していますが、この問題が発生しました。ここに歴史と修正があります:

pip uninstall opencv-python # -- the original step. failed.

ImportError: DLL load failed: The specified module could not be found.

私はこれを自分のpython3.6環境で行い、このエラーが発生しました。

python -m pip install opencv-python # same package as above.
conda install -c conda-forge opencv # separate install parallel to opencv
pip-install opencv-contrib-python # suggested by another user here. doesn't resolve it.

次に、python3.6をダウンロードしてpython3.dllをフォルダーやさまざまなフォルダーに配置してみました。何も変わっていません。

最後に、これはそれを修正しました:

pip uninstall opencv-python

(他のconda-forgeバージョンがまだインストールされています)これはcondaバージョンのみを残し、3.6で動作します。

>>>import cv2
>>>

ワーキング!

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