requirements.txt 中的 Python 更新包版本

Ram*_*san 2 python pip

我有一个requirement.txt 文件,其中包含要安装的python 包列表。其中一个包是psycopg2==2.6.2我需要将此包更新为psycopg2==2.7. 我尝试通过安装pip3 install psycopg2但它不影响requirement.txt文件。你能指出我正确的方向吗?

Jos*_*ton 7

正如您所发现的,pip 不会更新需求文件。因此,您可能想要使用的工作流程是:

  • 将需求文件中的 psycopg2 版本从 2.6.2 更新到 2.7
  • 使用升级标志运行 pip install

pip3 install -U -r requirements.txt

如果您熟悉类似的工具,npm可以更新目录文件中的版本,那么您可能对使用pipelinev感兴趣,它可以为您管理依赖项和虚拟环境,就像这样npm做一样。

如果您不知道软件包的最新版本,请使用 pip 来确定:

$ pip list --outdated | grep psycopg2                                                                           
psycopg2 (2.7.3.2) - Latest: 2.7.4 [wheel]
Run Code Online (Sandbox Code Playgroud)


Jat*_*mir 6

请注意,运行pip3 install psycopg2不尊重requirements.txt文件。要升级此软件包,您需要使用-U选项:

pip3 install -U psycopg2
Run Code Online (Sandbox Code Playgroud)

这是以下内容的简写:

pip3 install --upgrade psycopg2
Run Code Online (Sandbox Code Playgroud)

之后,您可以requirements.txt使用以下命令更新您的:

pip freeze > requirements.txt
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找requirements.txt在升级包/包后自动更新文件的解决方案,您可以使用pip-upgrader.

安装:

pip install pip-upgrader
Run Code Online (Sandbox Code Playgroud)

用法:

pip-upgrade
Run Code Online (Sandbox Code Playgroud)

上述命令自动发现需求文件并提示选择升级。您还可以指定需求文件的路径或/和指定要升级的包:

pip-upgrade /path/to/requirements.txt -p psycopg2
Run Code Online (Sandbox Code Playgroud)