终于写出一个项目了,兴奋吗? 那么如何把这个项目发出来给大家看呢? 本文的作者编写了在 .
作者以项目(估算算法训练时间的包)的发布为例,详细讲解了发布的每一步。
注意:本文假设您已经在网络上有一个要打包和发布的项目。
第0步:获得项目许可证
在做任何其他事情之前,由于您的项目将是开源的,因此它应该有一个许可证。 获取哪个取决于项目包的使用方式。 开源项目中的一些常见许可证是 MIT 或 BSD。
要向您的项目添加许可证,只需按照以下链接中的步骤将文件添加到项目存储库的根目录即可:
第 1 步:准备好代码
打包项目需要做一些准备工作:
from .estimate import Estimator
以.py为例,如果是最终用户会访问的类(该类是在.py文件中定义的)
import logging class LogMixin(object): @property def logger(self): name = '.'.join([self.__module__, self.__class__.__name__]) FORMAT = '%(name)s:%(levelname)s:%(message)s' logging.basicConfig(format=FORMAT, level=logging.DEBUG) logger = logging.getLogger(name) return logger
以日志系统为例:该类可以在任何其他类中使用
步骤2:使用打包工具创建setup.py
有了项目的结构后,您应该将 setup.py 文件添加到项目存储库的根目录中。 这有助于所有发布和版本维护流程的自动化。 这是一个示例 setup.py (源代码:)。
from setuptools import setup from os import path DIR = path.dirname(path.abspath(__file__)) INSTALL_PACKAGES = open(path.join(DIR, 'requirements.txt')).read().splitlines() with open(path.join(DIR, 'README.md')) as f: README = f.read() setup( name='scitime', packages=['scitime'], description="Training time estimator for scikit-learn algorithms", long_description=README, long_description_content_type='text/markdown', install_requires=INSTALL_PACKAGES, version='0.0.2', url='http://github.com/nathan-toubiana/scitime', author='Gabriel Lerner & Nathan Toubiana', author_email='toubiana.nathan@gmail.com', keywords=['machine-learning', 'scikit-learn', 'training-time'], tests_require=[ 'pytest', 'pytest-cov', 'pytest-sugar' ], package_data={ # include json and pkl files '': ['*.json', 'modelsscitime_data.py */setup.py
。 文件示例
步骤 4:标准化语法和编码风格
您还需要确保您的代码遵循 PEP8 准则(即具有标准样式并且语法正确)。 同样,有很多工具可以帮助您。 这里我们使用它。
第五步:创建合理的文档
现在您的项目已经过测试并且结构良好,是时候添加合理的文档了。 首先是要有一个好的文件,它将显示在项目存储库的根目录中。 完成后,最好添加以下内容:
由于文档应该相当全面,因此通常会有更详细的文档。 您可以使用它来完成并管理其上的文档。 文档相关的文件通常放置在 docs/ 文件夹中。 以及相关教程: .
带有标签和描述的项目库示例
第 6 步:创建持续集成
此时,您的项目距离发布准备就绪已经不远了。 然而,每次提交后都必须更新文档、运行测试以及检查样式和覆盖率,这似乎有点让人不知所措。 幸运的是,持续集成(CI)可以帮助您做到这一点。 您可以在每次提交后使用自动完成所有这些操作。 这是我们使用的一组 CI 工具:
language: python python: - "3.6" # command to install dependencies install: - pip install -r requirements.txt - pip install flake8 - pip install pytest-cov - pip install codecov # command to run tests script: - python -m pytest --cov=scitime - ./build_tools/flake_diff.sh after_success: - codecov
..yml 文件示例:请注意,对于每次提交,都需要运行测试并检查测试覆盖率。 但还有一项检查(逻辑在 .sh 文件中定义:)
environment: matrix: - PYTHON: "C:\\Python36-x64" install: # We need wheel installed to build wheels - "%PYTHON%\\python.exe -m pip install -r requirements.txt" - "%PYTHON%\\python.exe -m pip install pytest==3.2.1" build: off test_script: - "%PYTHON%\\python.exe -m pytest"
示例 .yml 文件:这里我们只运行测试
这将使更新项目库的整个过程变得更加容易。
集成提交历史记录示例
第 7 步:创建您的第一个和
此时,您即将推出的包应类似于以下内容:
your_package/ __init__.py your_module.py docs/ tests/ setup.py travis.yml appveyor.yml .coveragerc .codecov.yml README.md LICENSE .github/ CODE_OF_CONDUCT.md CONTRIBUTING.md PULL_REQUEST_TEMPLATE.md ISSUE_TEMPLATE/
现在准备发布! 要做的第一件事是创建您的第一个 - 这是为了跟踪项目在给定时间点的状态,每次版本更改时您都需要创建新的。 创建步骤: .
完成后,唯一要做的就是发布包。 最常见的分发包的平台是 PyPI 和 Conda。 下面我们描述如何使用两者进行发布:
结束!
您的包裹现在应该已发货并可供任何人使用! 虽然大部分工作已经完成,但您仍然需要维护您的项目,并且需要进行一些更新:这基本上意味着每次进行重大更改时都更改版本,创建一个新版本,然后再次执行步骤 7。
原文链接:
欲了解更多信息,请参阅:
%3A%2F%%2F两小时后--如何保持--健康--%%%26sk%)