使用pip命令从requirements.txt升级python包

Upgrade python packages from requirements.txt using pip command

如何使用pip命令从requirements.txt文件升级所有python包?

尝试使用以下命令

1
$ pip install --upgrade -r requirements.txt

因为,python包的后缀是版本号(Django==1.5.1),所以它们似乎没有升级。有没有比手动编辑requirements.txt文件更好的方法?

编辑

正如安迪在回答包中提到的,包被固定到特定的版本,因此无法通过pip命令升级包。

但是,我们可以使用以下命令通过pip-tools来实现这一点。

1
$ pip-review --auto

这将自动从requirements.txt升级所有包(确保使用pip install命令安装pip-tools)。


你可以试试:

1
pip install --upgrade --force-reinstall -r requirements.txt

您还可以忽略已安装的软件包并安装新软件包:

1
pip install -I, --ignore-installed -r requirements.txt


我已经在这里回答了这个问题。我的解决方案是:

因为没有简单的方法来逐个包升级和更新requirements.txt文件,所以我编写了这个pip升级程序,它还为所选包(或所有包)更新了requirements.txt文件中的版本。

安装

1
pip install pip-upgrader

用法

激活virtualenv(这一点很重要,因为它还将在当前virtualenv中安装升级包的新版本)。

cd进入你的项目目录,然后运行:

1
pip-upgrade

高级用法

如果需求放置在非标准位置,则将其作为参数发送:

1
pip-upgrade path/to/requirements.txt

如果您已经知道要升级哪个包,只需将它们作为参数发送:

1
pip-upgrade -p django -p celery -p dateutil

如果需要升级到预发布/发布后版本,请在命令中添加--prerelease参数。

完全公开:我写了这个包裹。


没有。您的需求文件已固定到特定版本。如果您的需求设置为该版本,那么您不应该试图升级到那些版本之外的版本。如果需要升级,则需要切换到需求文件中的未固定版本。

例子:

1
lxml>=2.2.0

这将把lxml升级到比2.2.0更高的任何版本

1
lxml>=2.2.0,<2.3.0

这将把lxml升级到2.2.0和2.3.0之间的最新版本。


由于我不能使用bash来实现这一点,所以我编写了一个python模块来创建一个没有版本的新需求文件,并使用它:

1
2
3
4
5
6
7
data = open('requirements-prod.pip', 'r')
data2 = open('requirements-prod-no-version.pip', 'w')
for line in data.readlines():
    new_line = line[:line.index('==')]
    data2.write(new_line + '
'
)
data2.flush()

然后从新文件pip install -U -r requirements-prod-no-version.pip安装libs

最终冻结原始文件pip freeze > requirements-prod.pip的版本


我按如下方式编辑requirements.txt并运行$sh./requirements.txt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
pip install -U amqp;
pip install -U appdirs;
pip install -U arrow;
pip install -U Babel;
pip install -U billiard;
pip install -U celery;
pip install -U Django;
pip install -U django-cors-headers;
pip install -U django-crispy-forms;
pip install -U django-filter;
pip install -U django-markdown-deux;
pip install -U django-pagedown;
pip install -U django-timezone-field;
pip install -U djangorestframework;
pip install -U fcm-django;
pip install -U flower;
pip install -U gunicorn;
pip install -U kombu;
pip install -U Markdown;
pip install -U markdown2;
pip install -U packaging;