Python从小白到高手实现系列四百九十五:README 文件

Python 包索引可以在PyPI 门户的包页面中显示一个项目的readme 或者long_
description 的值。你可以用reStructuredText 标记来编写这个说明,它在上传时会转换为
HTML 格式。不幸的是,目前PyPI 上的文档标记只能使用reStructuredText。这在短期内也
不太可能改变。更有可能的是,如果warehouse 项目完全取代了当前的PyPI 实现,那么
将会支持其他标记语言。不幸的是,我们仍然不知道warehouse 的最终发布时间。
但是,许多开发者想要使用不同的标记语言,原因有很多。最常见的选择是Markdown,
它是GitHub 上默认的标记语言—目前大多数开源的Python 开发都是在GitHub 上。因此,
GitHub 和Markdown 的粉丝通常要么忽略这个问题,要么就提供两份独立的文档文本。提
供给PyPI 的说明要么是项目GitHub 页面上说明的简短版本,要么是在PyPI 上无法正常显
示的普通的无格式Markdown。
如果你想使用除了reStructuredText 之外的标记语言来编写项目的README,你仍然
可以用可读的形式将它作为PyPI 页面上的项目说明。诀窍是在将包上传到Python 包索引
时使用pypandoc 包将你使用的其他脚本语言转换成reStructuredText。同时准备readme
文件的简单内容作为备用(fallback)也很重要,这样即使用户没有安装pypandoc,安装
也不会失败,代码如下:
try:
from pypandoc import convert
def read_md(f):
return convert(f, ‘rst’)
except ImportError:
convert = None
print(
“warning: pypandoc module not found, could not convert
Markdown to RST”
)
def read_md(f):
return open(f, ‘r’).read() # noqa
README = os.path.join(os.path.dirname(file), ‘README.md’)
setup(
name=‘some-package’,
long_description=read_md(README),

)
管理依赖
许多项目需要安装和/或使用一些外部包。如果依赖列表很长的话,就会出现一个问题:
如何管理依赖?在大多数情况下答案很简单。不要过度设计(over-engineer)问题。保持简
单,并在setup.py 脚本中明确提供依赖列表,代码如下:
from setuptools import setup
setup(
name=‘some-package’,
install_requires=[‘falcon’, ‘requests’, ‘delorean’]

)
有些Python 开发者喜欢使用requirements.txt 文件来追踪包的依赖列表。在某些
情况下,你可能会找到这么做的原因,但在大多数情况下,这是项目代码没有正确打包的
时代遗留的问题。无论如何,即使像Celery 这样著名的项目也仍然坚持使用这一约定。因
此,如果你不愿意改变习惯或者不知何故被迫使用requirements.txt 文件,那么至少
要将其做对。下面是从requirements.txt 文件读取依赖列表的常见做法之一:
from setuptools import setup
import os
def strip_comments(l):
return l.split(‘#’, 1)[0].strip()
def reqs(*f):
return list(filter(None, [strip_comments(l) for l in open(
os.path.join(os.getcwd(), *f)).readlines()]))
setup(
name=‘some-package’,
install_requires=reqs(‘requirements.txt’)

)

相关推荐

  1. 《微信程序开发入门实战》学习

    2024-04-11 18:20:01       40 阅读
  2. Postgresql高手 :Linux服务器配置详解

    2024-04-11 18:20:01       12 阅读
  3. 如何掌握Python

    2024-04-11 18:20:01       16 阅读
  4. 《微信程序开发入门实战》学习

    2024-04-11 18:20:01       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-11 18:20:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-11 18:20:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-11 18:20:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-11 18:20:01       20 阅读

热门阅读

  1. 数据结构5:哈希表

    2024-04-11 18:20:01       14 阅读
  2. 聊聊Redis消息队列stream

    2024-04-11 18:20:01       15 阅读
  3. python爱心代码高级

    2024-04-11 18:20:01       15 阅读
  4. 面试经典150题——移除元素

    2024-04-11 18:20:01       15 阅读
  5. LeetCode -- 第 392 场周赛

    2024-04-11 18:20:01       18 阅读
  6. rollup 插件架构-驱动设计 PluginDriver

    2024-04-11 18:20:01       15 阅读
  7. 中国知网:学术资源的宝库与知识共享的平台

    2024-04-11 18:20:01       17 阅读
  8. 蓝桥杯 2022 省 B 洛谷 P8787 砍竹子

    2024-04-11 18:20:01       18 阅读
  9. 【蓝桥杯】快读&快写

    2024-04-11 18:20:01       17 阅读