long_description只包含README.rst的第一行

时间:2016-02-15 16:15:51

标签: python python-3.x pypi python-wheel

我遇到了包装此模块的README.rst文件的问题。我查了很多来自SO的帖子,但没有发现任何帮助。

目前,我正在使用一个非常简单的自述文件进行测试

pytelemetry
===========

pytelemetry enables remote monitoring and control of embedded
devices. Specifically, pytelemetry implements a custom communication
protocol, based on the PubSub messaging pattern.

以下是setup.py文件的概述

here = path.abspath(path.dirname(__file__))
# Get the long description from the README file
with open(path.join(here, 'README0.rst'), encoding='utf-8') as f:
    long_description = f.read()
    print(long_description) # Prints the correct readme

setup(
    name='pytelemetry',

    version='1.1.0',

    description='Lightweight remote monitoring and control of embedded devices',
    long_description=long_description, # Not working !

我用python setup.py bdist_wheel构建包。使用python 3.5.1,轮子0.24.0和0.29.0。 print(long_description)工作得很好但是当我解压缩生成的轮子时,DESCRIPTION.rst文件(我认为应该包含长描述)只包含:

pytelemetry

这对应于我的README.rst的第一行。在pypi上,我得到相同的输出。为什么我最终只能在我的自述文件的第一行?

  • 我认为DESCRIPTION.rst包含在long_description中给setup.py提供的内容吗?
  • 如何解决此问题?
  • 如何在将来调试此类问题?

1 个答案:

答案 0 :(得分:2)

哇,这是一个愚蠢的问题。

失败的脚本是

try:
    long_description = pypandoc.convert('README.md', 'rst')
except OSError:
    print("Pandoc not found. Long_description conversion failure.")
    import io
    # pandoc is not installed, fallback to using raw contents
    with io.open('README.md', encoding="utf-8") as f:
        long_description = f.read()

我添加了这一行:

try:
    long_description = pypandoc.convert('README.md', 'rst')
    long_description = long_description.replace("\r","") # THAT $%^$*($ ONE
except OSError:
    print("Pandoc not found. Long_description conversion failure.")
    import io
    # pandoc is not installed, fallback to using raw contents
    with io.open('README.md', encoding="utf-8") as f:
        long_description = f.read()

现在,如果我解压缩生成的轮子,我可以在DESCRIPTION.rst中看到我的完整自述文件!好极了。 我不确定是什么原因引起了这个问题,或者它是pypandoc还是设置函数有问题。

为了找到这个解决方案,我简单地选择了pypandoc repo和had a look at their setup.py file,就是这样。