如何检测和删除通过 pip 安装的 Python 包?

lof*_*ops 81 package-management python pip

我不小心使用pip而不是apt-get. 我通过两种方式做到了这一点:

  • 使用旧版本的virtualenv,我--no-site-packages在创建virtualenv时忘记附加- 之后当我调用时pip install,安装到系统的Python包而不是virtualenv
  • 在正确设置的 virtualenv 中,我输入了sudo pip install somepackage- 安装到系统的 sudo 而不是 virtualenv

我碰巧注意到了这一点,因为我pip freeze在 virtualenv 之外输入了内容,并发现了一些不应该存在的 Python 包。所以现在我的问题是:

  • 如何识别系统上错误安装的所有 Python 包(即,出现在pip freeze列表中但未使用 安装的Python 包apt-get)?
  • 我如何删除它们?

Cap*_*iel 59

Ubuntu Oneiric(我也期待更新的版本)将 pip 包安装到/usr/local/lib/python2.7/dist-packages,并将apt包安装到/usr/lib/python2.7/dist-packages. 所以只需检查以前的目录和sudo pip uninstall你在那里找到的每个包。

  • 我变得残酷并发出了`sudo rm -r /usr/local/lib/python2.7`。到现在为止还挺好。 (13认同)
  • @Apteryx 该死的你这个人!我做了同样的事情,现在我的整个系统都搞砸了!因为 ubuntu 中几乎所有东西都依赖于 python! (6认同)

小智 30

Pip 目前会忽略试图卸载操作系统拥有的东西的卸载命令。它不会出错,就像丢失包一样。因此,现在您可以通过以下过程进行卸载:

pip freeze > dump.txt
Run Code Online (Sandbox Code Playgroud)

编辑转储文件以删除任何-e“可编辑安装”行,==符号后面的所有内容(%s;==.*;;g在 vim 中),将新行替换为空格(%s;\n; ;g在 vim 中)。然后你可以卸载所有未拥有的包

cat dump.txt | xargs sudo pip uninstall -y
Run Code Online (Sandbox Code Playgroud)

我不得不执行此过程两次,因为也安装了一些软件包~/.local/lib


一个单线来完成这个:

pip freeze > dump.txt
Run Code Online (Sandbox Code Playgroud)

  • 如果有人想要一个 vimless one-liner:`sudo pip uninstall -y $(pip freeze | sed 's;==.*;;g' | tr '\n' ' ')` (5认同)
  • 小心!这取决于您的操作系统是否提供了特殊版本的 `pip`。在 archlinux 上,`pip` 会愉快地卸载系统包。另一方面,debian jessie 上的`pip` 抱怨和错误:`Not uninstalling virtualenv at /usr/lib/python3/dist-packages,由操作系统拥有` (5认同)

sag*_*ise 7

AFAIKsudo pip install将安装在/usr/local/lib/pythonVERSION/dist-packages. 您需要运行sudo pip uninstall以在系统范围内卸载软件包。似乎pip freeze寻找包元数据并将列出安装的任何内容,即来自 pip 以及 virtualenvs 之外的 apt-get。-l虚拟环境中有选项可以列出仅适用于该虚拟环境的包,但它似乎也是虚拟环境中的默认情况。我认为您也可以删除相关的包,/usr/local/lib/pythonVERSION/dist-packages但我猜这不是很方便的方法。


Mit*_*tch 5

要删除通过 pip 安装的软件包,只需按键盘上的Ctrl+ Alt+T打开终端。当它打开时,运行下面的命令。

pip uninstall < package-name >
Run Code Online (Sandbox Code Playgroud)

搜索包

pip search <package you want to search for>
Run Code Online (Sandbox Code Playgroud)

要确定 pip 安装了哪些 Python 包,请通过freeze命令,该命令将为您提供已安装包及其版本的列表。我建议删除所有实例,然后使用sudo apt-get命令重新安装

sudo apt-get install python3
Run Code Online (Sandbox Code Playgroud)