为不同 python 版本的 Pypi 准备包
Preparing packages for Pypi for different python versions
我正在为 Pypi 准备一个包来计算 Markov chains with discrete state spaces 的稳态分布。
代码为 运行 的主要文件在 Python 2.7 和 Python 3.5 上都没有问题(在虚拟环境中测试过)。 setup.py 文件似乎也有效,至少对于 Python 2.7。
从现在开始,我不清楚如何进行。我应该 运行 setup.py 在 Python 的所有可能版本上为每个 Python 版本创建单独的 'egg' 文件吗?考虑到 Python 两个版本上的文件 运行s,这似乎相当乏味,而且每次更新包时都必须重做。
这里有什么好的做法?
如果您正在寻找一个好的发布清单(回答问题 "what should I do before I push to pypi?"),您不能错过 Audrey Roy 的 PyPI Release Checklist。这是一份动态文档,会根据需要进行更新,但重点是:
- 更新您的更新日志
- 更新您的版本号
- 运行 你的测试
- 为 pypi 构建,同时使用源代码分发 (sdist) 和较新的 wheel 格式。
- 推送到 pypi test instance (using twine)
- 检查您的自述文件是否正确呈现
- 测试测试实例的安装是否有效
- 推送到pypi生产
- 更新 git 存储库 tags/releases
其他不太重要的事情可能包括:
- 运行 像 pycodestyle or flake8
这样的 python 样式检查器
- 生成测试 coverage
关于鸡蛋问题的元素 - 它们不再是必需的(因为引入了轮格式)。考虑在您的 .gitignore 文件中添加一些内容,以防止它们被添加到您的存储库中。基本上,除非你使用本地代码,否则你需要做的就是同时部署 sdists 和 wheels,你应该没问题。
关于 "running without problems" 考虑将您的示例转换为测试,然后 运行 这些测试作为每个版本的一部分。您可以使用 tox locally, or use a service like travis or appveyor. This is particularly important if you have behaviour that should be preserved between releases - this is an important part of semantic versioning
我正在为 Pypi 准备一个包来计算 Markov chains with discrete state spaces 的稳态分布。
代码为 运行 的主要文件在 Python 2.7 和 Python 3.5 上都没有问题(在虚拟环境中测试过)。 setup.py 文件似乎也有效,至少对于 Python 2.7。
从现在开始,我不清楚如何进行。我应该 运行 setup.py 在 Python 的所有可能版本上为每个 Python 版本创建单独的 'egg' 文件吗?考虑到 Python 两个版本上的文件 运行s,这似乎相当乏味,而且每次更新包时都必须重做。
这里有什么好的做法?
如果您正在寻找一个好的发布清单(回答问题 "what should I do before I push to pypi?"),您不能错过 Audrey Roy 的 PyPI Release Checklist。这是一份动态文档,会根据需要进行更新,但重点是:
- 更新您的更新日志
- 更新您的版本号
- 运行 你的测试
- 为 pypi 构建,同时使用源代码分发 (sdist) 和较新的 wheel 格式。
- 推送到 pypi test instance (using twine)
- 检查您的自述文件是否正确呈现
- 测试测试实例的安装是否有效
- 推送到pypi生产
- 更新 git 存储库 tags/releases
其他不太重要的事情可能包括:
- 运行 像 pycodestyle or flake8 这样的 python 样式检查器
- 生成测试 coverage
关于鸡蛋问题的元素 - 它们不再是必需的(因为引入了轮格式)。考虑在您的 .gitignore 文件中添加一些内容,以防止它们被添加到您的存储库中。基本上,除非你使用本地代码,否则你需要做的就是同时部署 sdists 和 wheels,你应该没问题。
关于 "running without problems" 考虑将您的示例转换为测试,然后 运行 这些测试作为每个版本的一部分。您可以使用 tox locally, or use a service like travis or appveyor. This is particularly important if you have behaviour that should be preserved between releases - this is an important part of semantic versioning