如何创建不带所有包版本的 requirement.txt 文件。

13 浏览
0 Comments

如何创建不带所有包版本的 requirement.txt 文件。

现在我的requirement.txt文件包含以下包列表:

asgiref==3.2.3
beautifulsoup4==4.8.2
certifi==2019.11.28
chardet==3.0.4
Click==7.0
Django==3.0.2
idna==2.8
pytz==2019.3
requests==2.22.0
six==1.14.0
soupsieve==1.9.5
sqlparse==0.3.0
urllib3==1.25.7

我只想要包的名称,以便pip3始终安装最新版本。

admin 更改状态以发布 2023年5月22日
0
0 Comments

考虑一下,如果你在几个月前用 Django 2.x 写了开发APP,而且只在你的 requirements.txt 文件中将 Django 作为依赖项。现在 Django 3 已经发布了,如果你现在安装它,就会从 Django 2 直接跳到 Django 3,这可能会破坏你 APP 的一半功能。这还只是你依赖项中的一个。为此,我们故意将版本号定死,升级版本应该经过测试以确认其兼容性。你想在一个“已知良好”的状态下运行软件,而不是在一个随机不可预测的状态下运行软件。版本不兼容的情况不容小视。pip 可以方便地列出所有过时的依赖项,并升级它们只需要一条指令即可。\n\n逸事:openpyxl 在最近的 3.0.1 版本中发现了一个 bug,这个 bug 打破了我们 APP 的一个重要功能。你知道我们为什么没有受到影响吗?因为我们的 requirements.txt 文件使用了固定版本,我通过手动升级依赖项并决定不升级 openpyxl 来发现了这个问题。如果没有固定版本,我们的 APP 就会在 openpyxl 版本 3.0.1 仍是最新版本的几个星期内被破坏。

0
0 Comments

你可以使用Python解析requirements.txt文件,获取包名并手动拆分,如下:

with open("requirements.txt") as myFile:
  pkgs = myFile.read()
  pkgs = pkgs.splitlines()
  for pkg in pkgs:
      print(pkg.split('==')[0])

这样你会得到如下结果:

enter image description here

0