检查要求是否是最新的

2022-01-13 00:00:00 python pip pypi package requirements.txt

问题描述

我正在使用 pip 需求文件 用于保存我的依赖项列表.

I'm using pip requirements files for keeping my dependency list.

我还尝试遵循管理依赖项的最佳实践,并在需求文件中提供精确的包版本.例如:

I also try to follow best practices for managing dependencies and provide precise package versions inside the requirements file. For example:

Django==1.5.1
lxml==3.0

问题是:有没有办法告诉 Python 包索引中是否有任何更新的包版本可用于 requirements.txt 中列出的包?

The question is: Is there a way to tell that there are any newer package versions available in the Python Package Index for packages listed inside requirements.txt?

对于这个特定的示例,当前最新的可用版本分别是 Django 和 lxml 的 1.6.2 和 3.3.4.

For this particular example, currently latest available versions are 1.6.2 and 3.3.4 for Django and lxml respectively.

我试过 pip install --upgrade -r requirements.txt,但它说一切都是最新的:

I've tried pip install --upgrade -r requirements.txt, but it says that all is up-to-date:

$ pip install --upgrade -r requirements.txt 
Requirement already up-to-date: Django==1.5.1 ...

请注意,此时我不想运行实际升级 - 我只想看看是否有可用的更新.

Note that at this point I don't want to run an actual upgrade - I just want to see if there are any updates available.


解决方案

Pip 内置了这个功能.假设你在你的 virtualenv 类型中:

Pip has this functionality built-in. Assuming that you're inside your virtualenv type:

$ 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

之后,将下载并安装新版本的 psycopg2 和请求.那么:

After that new versions of psycopg2 and requests will be downloaded and installed. Then:

$ pip freeze > requirements.txt

你就完成了.这不是一个命令,但优点是您不需要任何外部依赖项.

And you are done. This is not one command but the advantage is that you don't need any external dependencies.

相关文章