小编典典

如何使PyPi描述Markdown工作?

python

我使用以下方式将软件包上传到PyPi:

python setup.py register -r pypi
python setup.py sdist upload -r pypi

我正在尝试修改我写的描述( 请不要编辑以下代码的格式,我故意这样做是为了演示我的问题 ):

**my plugin**

This plugin enables you to ... For example:
```python
@attr(section='MySection', id=1)
def test_function(self):
    """
    Bla bla bla
    """
    pass
```

但是,文本按原样显示, 没有 降价格式。我究竟做错了什么?


阅读 248

收藏
2021-01-20

共1个答案

小编典典

截至2018年3月16日,PyPI.org又名Warehouse(最终)在详细说明中支持Markdown。Warehouse在2018年4月取代了旧的旧版PyPI实施。

你需要:

  • 确保setuptools已升级到版本38.6.0或更高版本

  • 确保twine已升级到版本1.11.0或更高版本

  • 确保wheel已升级到版本0.31.0或更高版本

  • long_description_content_type您的setup()呼叫添加一个名为的新字段,并将其设置为'text/markdown'

    setup(
    long_description="""# Markdown supported!\n\n* Cheer\n* Celebrate\n""",
    long_description_content_type='text/markdown',
    # ....
    

    )

请参阅PEP 566-
Python软件包2.1的元数据

  • 使用twine你的发行版上传到PyPI中:
    $ python setup.py sdist bdist_wheel   # adjust as needed
    

    $ twine upload dist/*

旧的旧版PyPI基础架构不会呈现Markdown,只有新的Warehouse基础架构能够呈现。遗留的基础架构现已消失(截至2018-04-30)。

目前,PyPIcmarkgfm通过该readme_renderer用作markdown渲染器(readme_renderer.markdown.render(long_description)用于生成HTML输出)。这意味着您的markdown文档将呈现
GitHub上 完全相同的 外观;它本质上是相同的渲染器。

您可以long_description使用twine check命令twine1.12.0或更高版本)来验证您的软件包。

旧的<2018-03-16答案如下。


注意:这是一个古老的,现在已经过时的答案,自2018年3月16日起,只要您使用正确的工具即可支持Markdown,请参见上文

PyPI将它 支持降价,所以你的自述不会被渲染成HTML。

如果您需要呈现的自述文件,请坚持使用reStructuredText;在狮身人面像的介绍新结构化是一个很好的起点。

您可能希望安装该docutils软件包,以便可以在本地测试文档;您想rst2html.py在自述文件上运行包含的脚本,以查看产生了什么错误(如果有)。您的特定样本有太多错误:

$ bin/rst2html.py test.rst  > /tmp/test.html
test.rst:7: (ERROR/3) Unexpected indentation.
test.rst:3: (WARNING/2) Inline literal start-string without end-string.
test.rst:3: (WARNING/2) Inline interpreted text or phrase reference start-string without end-string.
test.rst:11: (WARNING/2) Block quote ends without a blank line; unexpected unindent.
test.rst:11: (WARNING/2) Inline literal start-string without end-string.
test.rst:11: (WARNING/2) Inline interpreted text or phrase reference start-string without end-string.

您的代码块正在使用Github的Markdown扩展,对于reStructuredText来说,这是完全错误的。您可以使用reST代码块(可能是dodocils的PyPI版本足够新):

.. code-block:: python

    @attr(section='MySection', type='functional+', module='MyModule', id=1)
    def test_function(self):
        """
        This is the original docstring
        """
        pass

要在本地测试,您还需要安装Pygments

如果您有兴趣,可以通过功能请求和拉取请求来添加对Markdown的支持。

2021-01-20