Python3:是否应该在需求中包含项目中不一定使用的依赖项.txt?



在Python中,假设我正在使用像flake8这样的库为我的项目执行样式指南,我还告诉我在同一项目中工作的程序员同事,flake8指南是我们将用作样式指南的。然而,我并没有直接在我的项目中使用它。我在命令行中运行flake8来检查我的项目是否遵循flake8准则,但不要在我的项目中使用它。如果是这种情况,那么flake8是否属于requirements.txt文件?或者可以省略它,并且只有项目中实际使用的依赖项需要进入requirements.txt文件中?

需求文件应该只包含程序所需的依赖项。由于flake8是确保造型一致性的支持模块,因此不属于此类。我不会把它包括在内。

Flake8是一个开发依赖项。这意味着,虽然这些包不需要在生产环境中,但它们无论如何都应该在开发环境中。

根据这个SO答案,我建议使用多环境需求txt文件结构:

`-- your_project_root
|-- requirements
|   |-- common.txt
|   |-- dev.txt
|   `-- prod.txt
`-- requirements.txt

文件的内容如下所示:

common.txt:

# Contains requirements common to all environments
req1~=1.0
req2~=1.0
req3~=1.0
...

dev.txt:

# Specifies only dev-specific requirements
# But imports the common ones too
-r common.txt
flake8~=6.0.0
dev_req~=1.0
...

prod.txt:

# Same for prod...
-r common.txt
prod_req~=1.0
...

然后你可以运行任一

pip install -r requirements/dev.txt

pip install -r requirements/prod.txt

取决于您所处的环境。

根据您使用的其他构建工具和CI/CD,您可能仍然需要requirements.txt,在这种情况下,您可以用所需的内容填充它:

requirements.txt:

# Mirrors prod
-r requirements/prod.txt

最新更新