需要知道setup.py和setup.cfg之间的区别。两者都在openstack项目中占据显着位置
答案 0 :(得分:15)
传统上,setup.py
已用于构建Python程序包,即
python setup.py build
与任何旧的Python文件一样,setup.py
可以包含许多代码。但是,在大多数情况下,它纯粹是声明性的,只列出了程序包属性,例如
from setuptools import setup
setup(
name="foobar",
version="0.1.0",
author="John Doe",
# ...
)
实际上,有些人认为在setup.py
中加入很多逻辑是不好的风格。为了反映这一点,setup.cfg
(通过设计声明性声明)在包装中变得越来越流行:
[metadata]
name = foobar
version = 0.1.0
author = John Doe
# ...
优点是打包软件(例如setuptools)不需要评估一个Python文件来获取元数据,而只需解析配置文件。
您可以为此添加一个虚拟setup.py
from setuptools import setup
if __name__ == "__main__":
setup()
或填满PEP 517 / 518,然后添加pyproject.toml
。
[build-system]
requires = ["setuptools>=42", "wheel"]
build-backend = "setuptools.build_meta"
这样,您可以使用pypa-build和
python3 -m build --sdist --wheel .
(在pip install build
之后)。
话虽这么说,Python打包软件的现状目前(2019/2020)非常活跃,并且尚不清楚哪种是将来定义Python包的首选方法。例如,有PEP 621建议将软件包元数据放入pyproject.toml
。
答案 1 :(得分:4)
setup.py
是python包的一个组成部分,其中包含有关应该是包的文件的详细信息或信息。这包括Python包安装和运行所需的依赖关系,入口点,许可证等。
setup.cfg
更多地是关于任何插件的设置或您希望创建的分发类型。 bdist / sdist以及通用或核心蟒蛇轮的进一步分类。它还可用于配置setup.py
的一些元数据。
答案 2 :(得分:2)
setup.py
是包含如何构建软件的实际说明的文件。这些说明可能有一些配置选项,例如对于单元测试,您可以指示是否应该计算测试覆盖率,或者安装前缀等。
setup.cfg
是一个文件,除了在调用python setup.py <somecommand>
时读取命令行外,还可用于指定此类选项。
通常,不可能写下构建一个所需的一切 先验分配:您可能需要从中获取一些信息 用户,或从用户的系统,以继续。只要那样 信息非常简单 - 搜索C的目录列表 例如,头文件或库,然后提供配置 file,setup.cfg,供用户编辑是一种便宜而简单的征集方式 它。配置文件还允许您为任何文件提供默认值 命令选项,安装程序可以在其上覆盖 命令行或编辑配置文件。
答案 3 :(得分:0)
setup.py
是Python创建和安装东西的方式。
如果您使用以下方式安装东西:
make
make install
在Python中,这是:
python setup.py build
python setup.py install
./configure
部分是setup.cfg