如何编写我的 PyPI 项目描述的内容?

Posted

技术标签:

【中文标题】如何编写我的 PyPI 项目描述的内容?【英文标题】:How can I compose the content of my PyPI project description? 【发布时间】:2020-03-10 05:33:00 【问题描述】:

我正在开发具有以下布局的Python project(使用 PyScaffold 设置):

project/
 - src/
 - docs/
   - _static/
     - assets/
       - logo.svg
   - index.rst
 - README.rst
 - AUTHORS.txt
 - setup.py
 - setup.cfg
 - ...

此项目托管在 GitHub 上,发布在 Pypi 上,并记录在 ReadTheDocs 上。我希望这 3 个站点呈现与主页(自述文件、详细描述、索引页)相似的内容,但一些细节除外:

在 GitHub 上,链接应重定向到 GitHub 文件页面 在 Pypi 和 Read the Docs 上,链接应重定向到 Read the Docs 页面 在 GitHub 上的分支上,链接应该重定向到分支文件(不是 master 的)

目前,我使用的 README.rst 看起来像:

.. _Authors: http://readthedocs/latest/authors.html

.. |logo| image:: http://readthedocs/assets/logo.svg
   :alt: Logo
   :width: 500


.. EndOfLinks

|logo|

`Authors`_

如下docs/index.rst

.. _Authors: ./authors.html

.. |logo| image:: ./_static/ewmh_m2m.svg
   :alt: Logo
   :width: 500

.. include:: ../README.rst
   :start-after: EndOfLinks

还有一个setup.cfg

long-description = file: README.rst
long-description-content-type = text/x-rst; charset=UTF-8

但是,在新分支上,README 呈现或链接不会反映基础文件中的任何更改,例如 this example。

在 README 中使用相对链接会使 Pypi 描述中的链接断开,并且不会显示徽标(请参阅here)

我尝试使用专用的pypi_description.rst 文件,类似于index.rst Pypi 和GitHub 如果它也包含include 指令,则不呈现RST。

【问题讨论】:

这似乎至少是两个问题,但我可以看到很难弄清楚如何最好地划分它们。似乎您可能已经回答了“如何将我的 README.rst 的一部分写入 Sphinx 文档?”的问题。和“GitHub README.rst 可以从其他文件中插入内容吗?”。 “”的问题。可以通过packaging.python.org/guides/making-a-pypi-friendly-readme及其链接内容来回答。 【参考方案1】:

如果你描述的第一次尝试对于 GitHub 和 RTD 来说已经足够了,那么问题就是如何为 PyPI 实现有效的长描述源,对吧?

setup.py中,可以设置setup()关键字参数long_description_content_type='text/x-rst'并将long_description设置为一串RST文本(no sphinx extensions),这样就可以用任意Python代码预处理长描述源早在setup.py

【讨论】:

这正是我在[您的评论]对我的问题之后所想的。目前,我使用限制功能的setup.cfg。在解析/复制README文件后,我将搜索如何使用setup.cfgsetup.py并从setup.py设置long_description 我终于从 setup.cfg 文件中删除了 long_description 并在 setup.py 中预处理我的 README 以构建有效的长描述。见the code。谢谢。

以上是关于如何编写我的 PyPI 项目描述的内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何将python模块放置到pypi库,如何编写python模块的安装文件使得其他开发者直接easy_install即可?

如何开始编写 Windows minifilter 驱动程序? [关闭]

是否可以编写一个 BigQuery 来检索 PyPI 下载的分箱计数?

如何在 PyPI 中设置项目链接

如何使用 twine 将新版本的项目上传到 PyPI?

如何在 cakephp 中编写内容类型?