How to uninstall a package installed with pip install --user
pip有一个
1 | pip install --user [python-package-name] |
我使用此选项在我没有根访问权限的服务器上安装包。我现在需要的是在当前用户上卸载已安装的包。我试图执行这个命令:
1 | pip uninstall --user [python-package-name] |
但我得到了:
1 | no such option: --user |
除了手动查找和删除包外,我如何卸载与
我找到了这篇文章
PIP无法从每个用户站点包目录中卸载
说明不支持从用户目录卸载包。根据文章,如果它是正确实现的,那么
1 | 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"的示例:
1 | pip uninstall oauth2client |
正如@thomas lotze所提到的,当前PIP工具不会这样做,因为没有相应的--user选项。但是我发现我可以签入~/.local/bin并查找特定的pip,在我看来它与--user选项对应。
在我看来:
1 2 3 4 | antho@noctil: ~/.l/bin$ pwd /home/antho/.local/bin antho@noctil: ~/.l/bin$ ls pip* pip pip2 pip2.7 pip3 pip3.5 |
然后用特定的PIP版本卸载。
答案还不可能。你必须手动移除它。
您可以一次卸载所有包。
1 2 3 4 5 6 7 | 1. First, install pip-purge. pip install pip-purge 2. Then, Run pip-purge |
确保只在virtualenv中运行
我运行的是Python版本4.3.22和python3.6.1环境,出现了这个问题。历史和解决方法如下:
1 2 3 | pip uninstall opencv-python # -- the original step. failed. ImportError: DLL load failed: The specified module could not be found. |
我在python3.6环境中做了这个操作,得到了这个错误。
1 2 3 | 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放在文件夹和各种文件夹中。没有改变。
最后,这解决了它:
1 | pip uninstall opencv-python |
(另一个Conda Forge版本仍然安装)这只剩下Conda版本,在3.6中工作。
1 2 | >>>import cv2 >>> |
工作!