如何使用pip命令从requirements.txt文件升级我所有的python包?
尝试以下命令
$ pip install --upgrade -r requirements.txt
因为python包的后缀是版本号(Django==1.5.1),所以它们似乎不会升级。有没有比手动编辑requirements.txt文件更好的方法?
EDIT
正如Andy在他的回答中提到的,包被固定到特定的版本,因此不可能通过pip命令升级包。
但是,我们可以使用以下命令使用pip-tools实现这一点。
$ pip-review --auto
这将自动升级requirements.txt中的所有包(确保使用PIP install命令安装PIP -tools)。
因为我不能用bash来做这个,我写了一个python模块来创建一个新的没有版本的需求文件并使用它:
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 + '\n')
data2.flush()
然后从新文件pip install -U -r requirements-prod-no-version.pip中安装这些库
最后将版本冻结到原始文件pip freeze > requirements-prod.pip
第二个答案是最有用的,但我想做的是锁定一些包,而其他包在最新版本(例如youtube-dl)。
一个requirements.txt的例子是这样的(~表示兼容):
Pillow==6.2.2
requests~=2.22.0
youtube_dl
然后在终端中,使用命令pip install——upgrade -r requirements.txt
这确保枕头将保持在6.2.2,请求将升级到最新的2.22。X(如果可用),如果还没有安装最新版本的youtube-dl,则将安装。
修复对特定版本的依赖关系是推荐的做法。
下面是另一个使用pur来保持依赖关系的解决方案!
给pur你的requirements.txt文件,它会自动更新你所有的高级包到最新版本,保持你原来的格式和注释到位。
例如,在example requirements.txt上运行pur将包更新到当前可用的最新版本:
$ pur -r requirements.txt
Updated flask: 0.9 -> 0.10.1
Updated sqlalchemy: 0.9.10 -> 1.0.12
Updated alembic: 0.8.4 -> 0.8.6
All requirements up-to-date.
由于pur从不修改您的环境或安装的包,它非常快,您可以安全地运行它,而不用担心破坏您的本地虚拟环境。Pur将更新requirements.txt文件与安装更新分开。因此,您可以使用pur,然后在不同的步骤中安装更新。