終于寫出一個項目了,興奮嗎? 那么如何把這個項目發出來給大家看呢? 本文的作者編寫了在 .
作者以項目(估算算法訓練時間的包)的發布為例,詳細講解了發布的每一步。
注意:本文假設您已經在網絡上有一個要打包和發布的項目。
第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%)