如何删除通过pip安装的所有软件包?

1223

如何从当前已激活的虚拟环境中卸载由pip安装的所有软件包?


60
卸载Python并不会删除pip软件包。请避免这样做,因为它很可能无法按照您预期的方式工作,并且取决于您如何重新安装Python,可能会导致您的机器处于不稳定状态,需要更多的工作来修复。 - blueberryfields
2
这可能有助于以开发模式或可编辑模式安装的软件包:https://dev59.com/zGQm5IYBdhLWcg3wyhVE - Charlie Parker
35个回答

0

选择要从此文件夹中删除的库:

C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\site-packages


1
尽管这会删除所有软件包(以及更多内容),但它并不像问题所问的那样使用pip。 - 12944qwerty

0
在Windows的命令行中,命令pip freeze | xargs pip uninstall -y无法正常工作。因此,对于那些使用Windows的用户,我已经找到了另一种替代方法。
  1. pip freeze命令安装的所有软件包名称复制到.txt文件中。
  2. 然后,转到.txt文件的位置并运行命令pip uninstall -r *textfile.txt*

0
您可以使用简单的循环来删除通过pip安装的所有软件包。
以下是Windows的命令:
for /f "delims=" %i in ('pip freeze') do pip uninstall -y "%i"

%i被用作循环变量,你应该在pip所在的同一目录中运行此命令,或者如果它不在系统的PATH中,你可以提供pip的完整路径。


-1
Pip 无法知道由其安装的软件包和系统包管理器安装的软件包。为此,您需要执行以下操作:
对于基于 rpm 的发行版(将 python2.7 替换为您使用 pip 安装的 python 版本):
find /usr/lib/python2.7/ |while read f; do
  if ! rpm -qf "$f" &> /dev/null; then
    echo "$f"
  fi
done |xargs rm -fr

针对基于Deb的发行版:

find /usr/lib/python2.7/ |while read f; do
  if ! dpkg-query -S "$f" &> /dev/null; then
    echo "$f"
  fi
done |xargs rm -fr

然后清理剩余的空目录:

find /usr/lib/python2.7 -type d -empty |xargs rm -fr

我发现最佳答案非常误导,因为它会从您的发行版中删除所有(大多数?)Python包,并可能使您的系统崩溃。

恕我直言,这似乎是可以比较的。为什么不使用 dpkg-query -S '/usr/lib/python2.7/*' 命令提取名称,并使用 dpkg-query -L 命令来转储相关文件呢?它已经准备好了清单。我的主要反对意见是,您没有针对通过 pip 安装的软件包以外的任何位置进行定位,而是针对了由您期望的管理器以外的任何东西安装的软件包,并且在 pip 通常不应该触及的位置。pip list -l 列出了它本地安装的软件包,有些甚至会使用 pip install --target=... 命令。删除所有当前为空的目录也会给您带来麻烦! - John P

-2
在我的情况下,我不小心使用在 macOS 上通过 Homebrew 安装的 pip 全局安装了许多软件包。恢复到默认软件包的最简单方法是执行以下命令:
$ brew reinstall python

或者,如果您正在使用 pip3

$ brew reinstall python3

这个答案对环境做了太多的假设,如果你正在使用pyenv,它并没有直接解决问题。 - Mark
@Mark 如果你正在使用pyenv,那么你需要做一些不同的事情。在通常情况下,我认为这是最简单和最少hacky的解决方案。请注意,这个条件在答案的开头明确说明了。 - Radon Rosborough
OP询问了关于virtualenvs的问题。他没有具体提到使用Mac或brew来安装Python。因此,您不能假设使用了操作系统或brew - 这个答案将无法解决所有情况。如果您专注于使用pip等工具解决环境问题,您将解决所处环境的上下文。希望这样说得清楚。 - Mark
3
@Mark,我了解你的立场。我们可以同意不同意见。我只是想帮助那些在点击标有“最简单的方法是使用pip删除所有已安装软件包”的链接时,实际上他们想要删除全局安装的所有pip软件包的谷歌用户。 - Radon Rosborough
1
同意@RadonRosborough的观点,链接标题代表了我为什么会来到这里,即使OP实际上没有问相同的问题。 - Kenn Sebesta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接