pip には、ユーザーごとに Python パッケージをインストールできる --user
オプションがある:
pip install --user [python-package-name]
このオプションを使って、root権限のないサーバーにパッケージをインストールしました。今必要なのは、インストールされたパッケージを現在のユーザにアンインストールすることです。私はこのコマンドを実行しようとしました:
pip uninstall --user [python-package-name]
しかし
no such option: --user
pip install --user` でインストールしたパッケージをアンインストールするには、手動でパッケージを見つけて削除する以外に方法がありますか?
以下の記事を見つけました。
pip cannot uninstall from per-user site-packages directory を見つけました。
という記事を見つけました。その記事によると、もし正しく実装されているのであれば
pip uninstall [package-name]
でインストールしたパッケージもユーザディレクトリから検索されることになります。しかし、まだ問題が残っています。同じパッケージがシステム全体とユーザごとにインストールされた場合はどうなるでしょうか? 誰かが特定のユーザーディレクトリをターゲットにする必要がある場合はどうでしょうか?
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
を実装した、まだマージされていない古い pull request があります)。
pipがアンインストールする場所はシステム全体と定義済みのユーザローカルだけなので、指定したユーザのローカルインストールディレクトリからアンインストールするには、それぞれのユーザで
pip uninstall` を実行する必要があります。
ただし、「pip install --user some_pkg」仮想環境内を使用しているユーザーには注意してください。
$ path / to / python -m venv〜/ my_py_venv。
$ソース〜/ my_py_venv / bin / activate。
(my_py_venv)$ pip install --user some_pkg。
(my_py_venv)$ pipアンインストールsome_pkg。
警告:インストールされていないため、some_pkgをスキップします。
(my_py_venv)$ pipリスト。
#この場合、「pip list」でも「some_pkg」が適切にリストされません。
``。
この場合、**現在の仮想環境を非アクティブにする**、対応する「python` / `pip`実行可能ファイルを使用して、ユーザーサイトパッケージをリストまたはアンインストールする必要があります。
```バッシュ。
(my_py_venv)$非アクティブ化。
$ path / to / python -m pipリスト。
$ path / to / python -m pipアンインストールsome_pkg。
``。
この問題は[数年前に報告された][1]ことに注意してください。 また、[現在の結論][2]は次のようになります。ユーザーの場所は仮想環境では実際には意味がないため、仮想envの「pip」内では「--user」は無効です。
[1]:https://github.com/pypa/pip/issues/3352。
[2]:https://github.com/pypa/pip/issues/3352#issuecomment-183746948。
@ thomas-lotzeが述べたように、対応する--userオプションがないため、現在のpipツーリングではそれはできません。 しかし、私が見つけたのは、〜/ .local / binをチェックインして、特定のpip#を検索できることです。#--userオプションに対応しているように見えます。
私の場合:
antho@noctil: ~/.l/bin$ pwd
/home/antho/.local/bin
antho@noctil: ~/.l/bin$ ls pip*
pip pip2 pip2.7 pip3 pip3.5
そして、特定のpipバージョンでアンインストールします。
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
(他のコンダフォージバージョンはまだインストールされています)これはコンダバージョンのみを残し、それは3.6で動作します。
>>>import cv2
>>>
作業。!
--user
フラグがインストールされたパッケージをアンインストールすることは可能だと思います。 これは私のために働いた;。
ピップフリーズ--user | xargsピップアンインストール-y
。
python 3の場合。
pip3 froze --user | xargs pip3アンインストール-y
。
しかし、どういうわけかこれらのコマンドはsetuptoolsをインストールしません。 これらのコマンドの後(本当にきれいなpythonが必要な場合)、それらを削除できます。
pipアンインストールsetuptools&& pipアンインストールpip
。