Upgrade python packages from requirements.txt using pip command
如何使用pip命令从requirements.txt文件升级所有python包?
尝试使用以下命令
1 | $ pip install --upgrade -r requirements.txt |
因为,python包的后缀是版本号(
编辑
正如安迪在回答包中提到的,包被固定到特定的版本,因此无法通过pip命令升级包。
但是,我们可以使用以下命令通过
1 | $ pip-review --auto |
这将自动从requirements.txt升级所有包(确保使用pip install命令安装
你可以试试:
1 | pip install --upgrade --force-reinstall -r requirements.txt |
您还可以忽略已安装的软件包并安装新软件包:
1 | pip install -I, --ignore-installed -r requirements.txt |
我已经在这里回答了这个问题。我的解决方案是:
因为没有简单的方法来逐个包升级和更新requirements.txt文件,所以我编写了这个pip升级程序,它还为所选包(或所有包)更新了
安装
1 | pip install pip-upgrader |
用法
激活virtualenv(这一点很重要,因为它还将在当前virtualenv中安装升级包的新版本)。
1 | pip-upgrade |
高级用法
如果需求放置在非标准位置,则将其作为参数发送:
1 | pip-upgrade path/to/requirements.txt |
如果您已经知道要升级哪个包,只需将它们作为参数发送:
1 | pip-upgrade -p django -p celery -p dateutil |
如果需要升级到预发布/发布后版本,请在命令中添加
完全公开:我写了这个包裹。
没有。您的需求文件已固定到特定版本。如果您的需求设置为该版本,那么您不应该试图升级到那些版本之外的版本。如果需要升级,则需要切换到需求文件中的未固定版本。
例子:
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() |
然后从新文件
最终冻结原始文件
我按如下方式编辑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; |