ale*_*cxe 49 python pip package pypi requirements.txt
我正在使用pip 需求文件来保存我的依赖项列表.
我还尝试遵循管理依赖项的最佳实践,并在需求文件中提供精确的包版本.例如:
Django==1.5.1
lxml==3.0
Run Code Online (Sandbox Code Playgroud)
问题是:有没有办法告诉Python Package Index中是否有更新的软件包版本可用于内部列出的软件包requirements.txt?
对于这个特定的例子,目前最新的版本分别是Django和lxml的1.6.2和3.3.4.
我试过了pip install --upgrade -r requirements.txt,但它说所有都是最新的:
$ pip install --upgrade -r requirements.txt
Requirement already up-to-date: Django==1.5.1 ...
Run Code Online (Sandbox Code Playgroud)
请注意,此时我不想运行实际升级 - 我只想查看是否有可用的更新.
Max*_*eev 95
Pip内置了此功能.假设你在virtualenv类型中:
$ pip list --outdated
psycopg2 (Current: 2.5.1 Latest: 2.5.2)
requests (Current: 2.2.0 Latest: 2.2.1)
$ pip install -U psycopg2 requests
Run Code Online (Sandbox Code Playgroud)
之后,将下载并安装新版本的psycopg2和请求.然后:
$ pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)
你完成了.这不是一个命令,但优点是您不需要任何外部依赖项.
ale*_*cxe 31
刚刚找到一个专门用于任务的python包 - piprot,带有以下口号:
How rotten are your requirements?
Run Code Online (Sandbox Code Playgroud)
使用起来非常简单:
$ piprot requirements.txt
Django (1.5.1) is 315 days out of date. Latest is 1.6.2
lxml (3.0) is 542 days out of date. Latest is 3.3.4
Your requirements are 857 days out of date
Run Code Online (Sandbox Code Playgroud)
你也可以"管" pip freeze到piprot命令,所以它实际上可以检查如何烂安装在您的沙箱/虚拟环境的包:
pip freeze | piprot
Run Code Online (Sandbox Code Playgroud)
希望将来能帮到某人.
既然你提到你喜欢遵循最佳实践,我猜你也在使用virtualenv,对吗?假设是这种情况,并且由于您已经固定了软件包,因此有一个名为pip-tools的工具可以针对您的virtualenv运行以检查更新.
有一个缺点,为什么我提到使用virtualenv虽然.
[该工具]检查PyPI并报告可用的更新.它使用当前安装的软件包列表来检查更新,它不使用任何requirements.txt
如果您在virtualenv中运行它,您可以轻松查看哪些软件包具有适用于您当前活动环境的更新.但是,如果您不使用virtualenv,则可能不是最好针对系统运行它,因为您的其他项目可能依赖于不同的版本(或者即使它们当前都有效,也可能无法与更新版本一起使用).
从提供的文档中,使用很简单.它会pip-review显示可用的更新,但不会安装它们.
$ pip-review
requests==0.13.4 available (you have 0.13.2)
redis==2.4.13 available (you have 2.4.9)
rq==0.3.2 available (you have 0.3.0)
Run Code Online (Sandbox Code Playgroud)
如果你想自动安装,工具也可以处理:$ pip-review --auto.还有一个--interactive可用于有选择地更新包的开关.
完成所有这些后,pip-tools提供一种方法来更新您的requirements.txt与最新版本:pip-dump.同样,这是针对当前活动的环境运行的,因此建议在virtualenv中使用.
项目的安装可以通过以下方式完成pip install pip-tools.
作者注:我已将它用于小型Django项目,并对此非常满意.但需要注意的是,如果您安装pip-tools到虚拟环境中,当您运行时,pip-dump您会发现它已添加到您的requirements.txt文件中.由于我的项目很小,我总是手动删除该行.如果您有某种构建脚本,则可能需要在部署之前自动将其删除.
你可以在env(虚拟或非虚拟)中简单地做这样的事情:
pip freeze | cut -d = -f 1 | xargs -n 1 pip search | grep -B2 'LATEST:'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13395 次 |
| 最近记录: |