为什么我有 Description-Content-Type: UNKNOWN

Why do I have Description-Content-Type: UNKNOWN

我最近在 .egg-info/PKG-INFO 中发现了一个新的元数据:Description-Content-Type

当我运行:

python setup.py egg_info

我得到:

Description-Content-Type: UNKNOWN

例如,我怎么知道我使用的是 Markdown (text/markdown)?

setuptools v36.4 (on Sept 2017). It is available in the Core Metadata v2.1 中引入了元数据字段 Description-Content-Type

您可以在 setup.py 中使用此元数据来指定包的内容类型 Description

经典用法是在long_description中填上你项目的README文件。 然后,您可以使用 long_description_content_type 参数来设置内容类型。

项目的详细描述显示在 PyPi(Python 包索引)中。 您可以阅读 PyPA 文章:“Including your README in your package’s metadata”。

这是一个例子:

import io

from setuptools import setup


def read(filename):
    with io.open(filename, mode="r", encoding='utf-8') as fd:
        return fd.read()


setup(
    name="YourProject",
    version='1.2.3',

    description="One line description of your project",
    long_description=read("README.rst"),
    long_description_content_type='text/x-rst',

    ...
)

您可以选择以下内容类型之一:

  • "text/plain":对于简单文本(例如:"README"或"README.txt"),
  • "text/x-rst":对于reStructuredText(例如:"README.rst"),或者
  • "text/markdown":用于 Markdown(例如:"README.md")。

注意: Markdown 的支持是最近的(你需要 setuptools >= 38.6)。

此外,您可以使用 twine 检查包的详细描述(一旦构建了可分发包)。例如:

twine check dist/*