什么是python项目

时间:2016-09-14 07:33:36

标签: python-2.7 openstack setuptools

需要知道setup.py和setup.cfg之间的区别。两者都在openstack项目中占据显着位置

4 个答案:

答案 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>时读取命令行外,还可用于指定此类选项。

documentation for setup.cfg州:

  

通常,不可能写下构建一个所需的一切   先验分配:您可能需要从中获取一些信息   用户,或从用户的系统,以继续。只要那样   信息非常简单 - 搜索C的目录列表   例如,头文件或库,然后提供配置   file,setup.cfg,供用户编辑是一种便宜而简单的征集方式   它。配置文件还允许您为任何文件提供默认值   命令选项,安装程序可以在其上覆盖   命令行或编辑配置文件。

答案 3 :(得分:0)

setup.py是Python创建和安装东西的方式。

如果您使用以下方式安装东西:

  • make
  • make install

在Python中,这是:

  • python setup.py build
  • python setup.py install

./configure部分是setup.cfg