【问题标题】:Why is setup.cfg's package_dir setting on multiple lines in Python packaging tutorial?为什么 Python 打包教程中 setup.cfg 的 package_dir 设置在多行?
【发布时间】:2021-12-12 00:10:03
【问题描述】:

我正在关注a tutorial 开发 Python 包。在本教程中,他们展示了如何设置基本的setup.cfg 文件,如下所示。

[metadata]
name = example-pkg-YOUR-USERNAME-HERE
version = 0.0.1
author = Example Author
author_email = author@example.com
description = A small example package
long_description = file: README.md
long_description_content_type = text/markdown
url = https://github.com/pypa/sampleproject
project_urls =
    Bug Tracker = https://github.com/pypa/sampleproject/issues
classifiers =
    Programming Language :: Python :: 3
    License :: OSI Approved :: MIT License
    Operating System :: OS Independent

[options]
package_dir =
    = src
packages = find:
python_requires = >=3.6

[options.packages.find]
where = src

我的问题与这部分有关。

package_dir =
    = src

我不明白为什么这会延伸到多行。当我用单行 package_dir = src 替换这两行时,我在尝试构建时发现以下错误。

distutils.errors.DistutilsOptionError: Unable to parse option value to dict: src

ERROR Backend subproccess exited when trying to invoke get_requires_for_build_sdist

多行或赋值运算符的明显必要性是怎么回事?

【问题讨论】:

    标签: python setuptools python-packaging


    【解决方案1】:

    确保= src 没有缩进。它应该总是看起来像:

    [options]
    package_dir =
        = src
    

    package_dir 将包映射到它们的文件夹,而 = src 被解析为 Python 字典 {'': 'src'}。 = src 表示./src 包含您发行版的所有包

    【讨论】:

      【解决方案2】:

      您实际上可以在同一页面中找到更多信息

      package_dir 是包名和目录的映射。一个空的包名代表“根包”——项目中包含包的所有 Python 源文件的目录——所以在这种情况下,src 目录被指定为根包。

      package_dir =是配置参数

      = src 表示包名为空,因此

      空包名代表“根包”

      【讨论】:

        猜你喜欢
        • 2013-07-19
        • 2014-10-15
        • 2022-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-29
        相关资源
        最近更新 更多