我有一个在开发过程中发生变化的 pip 需求文件。
可以pip
来卸载 没有出现在需求文件中的包以及安装那些出现的包吗?有标准方法吗?
这将允许 pip 要求文件成为包的规范列表 - 一种“当且仅当”的方法。
更新:我在 https://github.com/pypa/pip/issues/716 建议将其作为新功能
最佳答案
这应该卸载任何不在 requirements.txt 中的内容:
pip freeze | grep -v -f requirements.txt - | grep -v '^#' | xargs pip uninstall -y
虽然这不适用于使用 -e
安装的软件包,即来自 git 存储库或类似存储库。要跳过这些,只需过滤掉以 -e
标志开头的包:
pip freeze | grep -v -f requirements.txt - | grep -v '^#' | grep -v '^-e ' | xargs pip uninstall -y
那么,显然:
pip install -r requirements.txt
2016 年更新:
不过,您可能并不想真正使用上述方法。 Check out pip-tools
and pip-sync
它以更强大的方式完成您可能希望做的事情。
https://github.com/nvie/pip-tools
2016 年 5 月更新:
您现在也可以使用 pip uninstall -r requirements.txt
,但这基本上相反 - 它会卸载 requirements.txt
2019 年 5 月更新:
查看 pipenv或 Poetry .包管理领域发生了很多事情,使得这类问题有 pip 过时了。不过,我实际上仍然很乐意使用 pip-tools。
关于python - 如何使用 pip 要求文件来卸载和安装软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13176968/