如何卸载使用 pip install --user 安装的包
How to uninstall a package installed with pip install --user
pip 有一个 --user
选项,可以为每个用户安装 Python 包:
pip install --user [python-package-name]
我使用此选项在我没有根访问权限的服务器上安装了一个程序包。我现在需要的是卸载当前用户上安装的包。我试图执行这个命令:
pip uninstall --user [python-package-name]
但是我得到了:
no such option: --user
除了手动查找和删除软件包外,如何卸载使用 pip install --user
安装的软件包?
我找到了这篇文章
说明不支持从用户目录卸载包。根据这篇文章,如果它被正确实施,那么
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
。)
因为 pip
唯一的卸载位置是系统范围和预定义的用户本地,您需要 运行 pip uninstall
作为相应的用户从给定用户的本地安装目录卸载。
答案是还不可能。您必须手动将其删除。
在 MacOS 上卸载软件包 'oauth2client' 的示例:
pip uninstall oauth2client
正如@thomas-lotze 所提到的,目前 pip 工具不会这样做,因为没有相应的 --user 选项。但我发现我可以检查 ~/.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
(另一个conda-forge版本仍然安装)这只剩下conda版本,并且在3.6中有效。
>>>import cv2
>>>
工作中!
但要小心,对于那些在虚拟环境中使用 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
请注意,此问题 was reported few years ago. And it seems that the current conclusion 是:--user
在虚拟环境的 pip
中无效,因为用户位置对于虚拟环境没有意义。
我强烈建议您使用虚拟环境进行 python 软件包安装。使用 virtualenv,您可以防止任何包冲突和与 python 相关的用户态命令的完全隔离。
要删除全局安装的所有包,请按照此操作;
可以卸载使用 --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
现在您拥有干净的 python 环境。您可以创建 virtualenv 并在其中安装包。
pip 有一个 --user
选项,可以为每个用户安装 Python 包:
pip install --user [python-package-name]
我使用此选项在我没有根访问权限的服务器上安装了一个程序包。我现在需要的是卸载当前用户上安装的包。我试图执行这个命令:
pip uninstall --user [python-package-name]
但是我得到了:
no such option: --user
除了手动查找和删除软件包外,如何卸载使用 pip install --user
安装的软件包?
我找到了这篇文章
说明不支持从用户目录卸载包。根据这篇文章,如果它被正确实施,那么
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
。)因为
pip
唯一的卸载位置是系统范围和预定义的用户本地,您需要 运行pip uninstall
作为相应的用户从给定用户的本地安装目录卸载。
答案是还不可能。您必须手动将其删除。
在 MacOS 上卸载软件包 'oauth2client' 的示例:
pip uninstall oauth2client
正如@thomas-lotze 所提到的,目前 pip 工具不会这样做,因为没有相应的 --user 选项。但我发现我可以检查 ~/.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
(另一个conda-forge版本仍然安装)这只剩下conda版本,并且在3.6中有效。
>>>import cv2
>>>
工作中!
但要小心,对于那些在虚拟环境中使用 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
请注意,此问题 was reported few years ago. And it seems that the current conclusion 是:--user
在虚拟环境的 pip
中无效,因为用户位置对于虚拟环境没有意义。
我强烈建议您使用虚拟环境进行 python 软件包安装。使用 virtualenv,您可以防止任何包冲突和与 python 相关的用户态命令的完全隔离。
要删除全局安装的所有包,请按照此操作;
可以卸载使用 --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
现在您拥有干净的 python 环境。您可以创建 virtualenv 并在其中安装包。