我有一个在开发过程中发生变化的pip需求文件.
可以pip被制成卸载,不会出现在需求文件以及安装那些确实出现包?有标准的方法吗?
这将允许pip需求文件成为包的规范列表 - "if if only only"方法.
更新:我在https://github.com/pypa/pip/issues/716上将其建议为新功能
Ste*_*hry 106
这应该卸载不在requirements.txt中的任何内容:
pip freeze | grep -v -f requirements.txt - | grep -v '^#' | xargs pip uninstall -y
Run Code Online (Sandbox Code Playgroud)
虽然这对于安装的软件包-e(即从git存储库或类似软件包中)来说无法正常工作.要跳过这些,只需过滤掉以-e标志开头的包:
pip freeze | grep -v -f requirements.txt - | grep -v '^#' | grep -v '^-e ' | xargs pip uninstall -y
Run Code Online (Sandbox Code Playgroud)
然后,显然:
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
2016年更新:
您可能并不真的想要实际使用上述方法.查看pip-tools并pip-sync以更加强大的方式完成您可能要做的事情.
https://github.com/nvie/pip-tools
2016年5月更新:
你现在也可以使用pip uninstall -r requirements.txt,但这完全相反 - 它卸载了所有内容requirements.txt
dbr*_*dbr 15
这不是特征pip,不是.如果你真的想要这样的东西,你可以写一个脚本来比较pip freeze你的输出requirements.txt,但它可能比它的价值更麻烦.
使用virtualenv,创建一个干净的环境和(重新)安装更简单,更可靠requirements.txt,如:
deactivate
rm -rf venv/
virtualenv venv/
source venv/bin/activate
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
小智 15
您可以使用所有已安装的软件包创建一个新文件
pip freeze > uninstall.txt
Run Code Online (Sandbox Code Playgroud)
然后卸载所有这些
pip uninstall -r uninstall.txt -y
Run Code Online (Sandbox Code Playgroud)
然后最后重新安装原始requirements.txt文件中的软件包
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
Mic*_*ior 12
简短的回答是不,你不能用pip做到这一点.
现在,您可以将-r requirements.txt参数传递给pip uninstall。
pip uninstall -r requirements.txt -y
Run Code Online (Sandbox Code Playgroud)
至少从pip8.1.2开始,pip help uninstall显示:
...
Uninstall Options:
-r, --requirement <file> Uninstall all the packages listed in the given requirements file. This option can be
used multiple times.
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36215 次 |
| 最近记录: |