如何解决是否有理由在 python 项目中同时拥有 tox.ini 和 setup.cfg?
我刚刚使用 PyScaffold 搭建了一个 Python 项目。引起我注意的一件事是脚手架同时生成了 setup.cfg 和 tox.ini 文件。如果我的理解是正确的,如果我使用 tox
命令使用 tox,它只会查看 tox.ini 文件并完全忽略 setup.cfg 和 setup.py。
在这种情况下,我的问题是:是否有理由将它们都保留在项目中,或者仅使用 tox.ini 或 setup.cfg 就足够了?如果我必须将它们都保留在我的项目中,是否有一种简单的方法可以使它们都使用相同的配置(例如,用于运行 Flake8 进行 linting 的配置)而我不必在 setup.cfg 和 tox 中键入这些配置。 ini?
解决方法
让我们一步一步来。
PyScaffold
是一种试图简化新 Python 项目设置的工具。
什么是 Python 项目?
本质上,一个可执行的 Python 文件就足够了。
如果要使项目可安装,则需要构建系统的配置文件。
虽然随着时间的推移发生了很多变化,但 setup.py
仍然是最突出的。在某个时间点,人们发现构建配置文件可以执行任意代码可能不是一个好主意,因此发明了 setup.cfg
,您可以在其中定义例如ini 样式格式的项目名称和依赖项。同时,还发明了另一种格式,即 pyproject.toml
文件。
所以基本上,要构建您的项目,您需要其中之一:
- setup.py
- setup.py 和 setup.cfg(前者只调用后者)
- pyproject.toml
通常您想为您的项目编写测试。您可以使用内置的 unittest
测试运行器来运行您的测试,或者现在许多项目都使用 pytest
。 pytest
可以配置为 pytest.ini
。
测试通常需要一些依赖,例如pytest
本身以及其他一些测试助手。它们需要在某个时间安装。
这时候tox
就派上用场了。在许多其他功能中,例如针对不同的 Python 版本运行您的测试,tox
可以安装您的项目和您的测试需求并执行测试。 tox
通常带有 tox.ini
文件。
哦,那掉毛呢?您希望代码易于阅读并遵循 Python 指南(例如 PEP 8),因此您通常使用 flake8
之类的工具 - 它也带有自己的配置文件,即 .flake8
。>
好的,现在我们有很多工具和很多配置文件,但这还不是全部。由于不是每个人都喜欢这么多的配置文件,所以有些工具支持使用其他工具的配置文件进行配置。
例如您可以在 flake8
和 setup.cfg
中配置 tox.ini
,请参阅 https://flake8.pycqa.org/en/latest/user/configuration.html
您还可以通过 tox
或 setup.cfg
配置 pyproject.toml
,请参阅 https://tox.readthedocs.io/en/latest/config.html#configuration-discovery
要知道的一件重要事情:您只需配置一次工具,而不是在所有这些文件中。
因此,从技术上讲,您不需要所有这些文件,您认为易于阅读且易于管理的项目设置取决于您。
在过去的 Python Ireland 聚会上,我做了一个 5 分钟的闪电式演讲,讨论了这一切是多么令人困惑以及我想出了什么解决方案:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。