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)
以下对我有用(可以从任何 Python 3.6 执行virtualenv):
virtualenv --clear your-env-name
Run Code Online (Sandbox Code Playgroud)
哪里your-env-name可以:
virtualenv-wrapper,只需环境名称小智 9
根据@Steve Rossiter 和 @James Rocker 的答案,我们还可以进行一些简单的修改,并避免在一行中生成临时文件,例如:
pip uninstall -y -r <(pip freeze)
Run Code Online (Sandbox Code Playgroud)
(我想将此作为对答案的评论发布,但我对此没有足够的声誉。)
您可以使用pip-tools的pip-sync功能来保持环境清洁。
现在您已经有了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)
这个答案可能正是您所需要的.
您可以安装并使用pip-autoremove实用程序来删除程序包以及未使用的依赖项.
Run Code Online (Sandbox Code Playgroud)# install pip-autoremove pip install pip-autoremove # remove "somepackage" plus its dependencies: pip-autoremove somepackage -y