我怎样才能'清理'一个虚拟的人?

del*_*lta 7 python pip virtualenv

如果我想让我的venv尽可能干净,我该如何清理我不需要的东西?让我举一个例子......

说我尝试了一堆新模块......

pip install foo
pip install bar
pip install foobar
pip install foobarfoo
Run Code Online (Sandbox Code Playgroud)

这些模块有自己的一些要求等等.后来我决定要使用哪一个,但后来我的requirements.txt里有一大堆东西,我不记得我需要什么,不知道我做什么什么,取决于什么,等等.

我怎样才能保持清洁和精益?

Ste*_*ter 13

要卸载每个包(包括依赖项),您可以冻结需求,然后将它们传递给pip uninstall

pip freeze > to-uninstall.txt
pip uninstall -r to-uninstall.txt
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的解决方案。然而,对于较大的虚拟环境,必须确认每个包的删除可能会很烦人。在这种情况下,我建议使用:`pip uninstall -y -r to-uninstall.txt`,它会绕过提示 (29认同)

Art*_*yan 9

以下对我有用(可以从任何 Python 3.6 执行virtualenv):

virtualenv --clear your-env-name
Run Code Online (Sandbox Code Playgroud)

哪里your-env-name可以:

  • 虚拟环境的路径(相对于当前目录或绝对)
  • 或者,如果您使用virtualenv-wrapper,只需环境名称

  • “在创建环境之前,删除环境目录的内容(如果已存在)。” (2认同)

小智 9

根据@Steve Rossiter 和 @James Rocker 的答案,我们还可以进行一些简单的修改,并避免在一行中生成临时文件,例如:

pip uninstall -y -r <(pip freeze)
Run Code Online (Sandbox Code Playgroud)

(我想将此作为对答案的评论发布,但我对此没有足够的声誉。)


Fab*_*ble 7

您可以使用pip-toolspip-sync功能来保持环境清洁。

来自pip-tools 的文档

现在您已经有了requirements.txt,您可以用来pip-sync更新虚拟环境以准确反映其中的内容。这将安装/升级/卸载匹配requirements.txt内容所需的一切。

只需安装 pip-tools 并调用 pip-sync 命令:

pip install pip-tools
pip-sync requirements.txt
Run Code Online (Sandbox Code Playgroud)

(旁注:pip-tools 还可以很好地管理您的依赖版本,使您的构建具有可预测性和确定性;有关更多信息,请参阅pip-tools 的文档)


小智 7

稍微改进另一个答案

使用 pip 但添加 -y 以避免每个库的提示。

完成后不要忘记删除文件“to_uninstall.txt”!

pip freeze > to_uninstall.txt
pip uninstall -y -r to_uninstall.txt
Run Code Online (Sandbox Code Playgroud)


Bre*_*bel 5

这个答案可能正是您所需要的.

您可以安装并使用pip-autoremove实用程序来删除程序包以及未使用的依赖项.

# install pip-autoremove 
pip install pip-autoremove
# remove "somepackage" plus its dependencies: 
pip-autoremove somepackage -y
Run Code Online (Sandbox Code Playgroud)

  • 完成后别忘了删除pip-autoremove! - > (4认同)