我怎样才能使这个long_description和README有几句不同?

时间:2010-01-25 19:22:03

标签: python github setuptools distutils pypi

对于我的一个软件包,我有一个README.rst文件,可以读入setup.py的长描述:

readme = open('README.rst', 'r')
README_TEXT = readme.read()
readme.close()

setup(
    ...
    long_description = README_TEXT,
    ....
    )

这样我每次提交时都可以在github page上显示README文件,每次python setup.py register时都会显示pypi page。只有一个问题。我想在github页面上说“这篇文档反映了envbuilder的预发布版本。对于最新版本,请参阅pypi。”

我可以把这些行放在README.rst中并在python setup.py register之前删除它们,但是我知道在推到pypi之前我会忘记删除句子。

我正在考虑自动化这种方法的最佳方法,所以我不必担心它。有人有主意吗?我可以做任何setuptools / distutils魔法吗?

3 个答案:

答案 0 :(得分:8)

您可以使用ReST评论中的某些文字,例如“拆分此处”,然后在您的setup.py中将其拆分。 Ian Bicking在使用index.txtsetup.py的virtualenv中做到了这一点。

答案 1 :(得分:5)

另一种选择是通过添加适用于两种环境的段落来完全解决问题:“最新的不稳定代码在github上。最新的稳定工具包在pypi上。”

毕竟,为什么假设pypi人不想被指向github?这对两个受众群体都更有帮助,并简化了setup.py。

答案 2 :(得分:2)

您可以随时执行此操作:

GITHUB_ALERT = 'This document reflects a pre-release version...'
readme = open('README.rst', 'r')
README_TEXT = readme.read().replace(GITHUB_ALERT, '')
readme.close()

setup(
    ...
    long_description = README_TEXT,
    ....
    )

但是,您必须使GITHUB_ALERT字符串与README的实际措辞保持同步。使用正则表达式(比如说,匹配以 Note为Github用户开头的行:或其他东西)可能会给你一点灵活性。