我正在尝试修复我的一个virtualenv -我想将所有已安装的库重置为与生产相匹配的库。

有没有一种快速简单的方法来处理皮普?


当前回答

(添加这个作为答案,因为我没有足够的声誉来评论@blueberryfields的回答)

@blueberryfields的答案工作得很好,但如果没有包可以卸载(如果这个“卸载全部”是脚本或makefile的一部分,这可能是一个问题)。当使用GNU版本的xargs时,这个问题可以用xargs -r来解决:

pip freeze --exclude-editable | xargs -r pip uninstall -y

来自man xargs:

- r, no-run-if-empty 如果标准输入中不包含非空字符,请不要执行该命令。通常情况下,该命令即使存在也只运行一次 没有输入。这个选项是一个GNU扩展。

其他回答

在Windows上,如果你的路径配置正确,你可以使用:

pip freeze > unins && pip uninstall -y -r unins && del unins

对于类unix系统应该是类似的情况:

pip freeze > unins && pip uninstall -y -r unins && rm unins

只是一个警告,这不是完全可靠的,因为你可能会遇到诸如“文件未找到”等问题,但它可能在某些情况下仍然有效

编辑:为清晰起见:unins是一个任意文件,当该命令执行时,该文件中写入了数据

然后,它编写的文件被用于通过pip uninstall -y -r unins在隐含同意/事先批准的情况下卸载上述软件包

文件最终在完成时被删除。

方法一(冷冻)

pip freeze | xargs pip uninstall -y

方法二(附pip表)

pip list | awk '{print $1}' | xargs pip uninstall -y

方法三(使用virtualenv)

virtualenv --clear MYENV

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

C:\Users\User\AppData\Local\Programs\Python\Python310\Lib\网站

我做到了以下几点:

用当前安装的包列表创建名为reqs.txt的需求文件

pip freeze > reqs.txt

然后卸载reqs.txt中的所有包

# -y means remove the package without prompting for confirmation
pip uninstall -y -r reqs.txt

我喜欢这种方法,因为如果你犯了错误,你总是有一个pip需求文件可以依靠。它也是可重复的,而且是跨平台的(Windows、Linux、MacOs)。

这适用于我的windows系统

pip freeze > packages.txt && pip uninstall -y -r packages.txt && del packages.txt

第一部分pip freeze > packages.txt创建一个文本文件,其中包含使用pip安装的包的列表以及版本号

第二部分pip uninstall -y -r packages.txt删除已安装的所有软件包,不需要确认提示。

第三部分del packages.txt删除刚刚创建的packages.txt。