演示如何构造python项目。
somepackage的Python项目详细描述
建议
Python2还是3?
- 在Python3下开发代码,测试Python2和Python3 但是,假设python 3现在是默认的。
将代码分成包、模块和函数
- 所有代码都应该在某个函数中(除了if __name__ == '__main__':)。
- 将长函数拆分为更小的函数。
- 如果需要在多个屏幕上滚动一个函数,可能太长了。
- 用下划线隐藏内部。
- 将相关功能组织成模块。
- 如果模块太大,请将它们分开。
- 使用from .somemodule import something从somepackage/下的其他模块导入。
- 在代码的“外部”进行I/O文件,而不是在代码的内部。
命名
- 为子目录指定与包相同的名称。
- 在命名包之前,请检查名称是否不在https://pypi.org上 (您可能希望有一天将您的包上载到pypi)。
接口
- 在somepackage/__init__.py中,定义应该对外部可见的内容。
- 使用https://semver.org。
测试
- 测试所有不重要的代码。我建议使用https://pytest.org。
- 使用travis ci:https://docs.travis-ci.com/user/languages/python/。
依赖性管理
- 开发人员的包依赖项应列在requirements.txt中。
- 代码用户(可能通过pip安装)的包依赖项应列在setup.py中。
代码样式
- 遵循PEP8:https://www.python.org/dev/peps/pep-0008/
- 使用pycodestyle自动检查pep8。
- 考虑使用类型提示:https://docs.python.org/3/library/typing.html
- 考虑在运行时验证类型注释:https://github.com/RussBaz/enforce
文件
- 在自述文件中使用rst(以简化https://pypi.org)。
建议?更正?拉取请求?
是的,拜托!