如何開源你的 Python 庫
你寫了一個 Python 庫。自己覺著這太棒了!如果讓人們能夠輕鬆使用它不是很優雅麼?這有一個需要考慮的清單,以及在開源 Python 庫時要採取的具體步驟。
1、原始碼
將程式碼放在 GitHub 上,這裡有很多開源專案,並且人們很容易提交拉取請求。
2、許可證
選擇一個開源許可證。一般來說 MIT 許可證是一個挺好的寬容許可證。如果你有特定要求,Creative Common 的選擇許可證可以指導你完成其它選擇。最重要的是,在選擇許可證時要記住三條規則:
- 不要建立自己的許可證。
- 不要建立自己的許可證。
- 不要建立自己的許可證。
3、README
將一個名為 README.rst
的檔案(使用 ReStructured Text 格式化)放在專案樹的頂層。
GitHub 將像 Markdown 一樣渲染 ReStructured Text,而 ReST 在 Python 的文件生態系統中的表現更好。
4、測試
寫測試。這對你來說沒有用處。但對於想要編寫避免破壞相關功能的補丁的人來說,它非常有用。
測試可幫助協作者進行協作。
通常情況下,如果可以用 pytest 執行就最好了。還有其他測試工具 —— 但很少有理由去使用它們。
5、樣式
使用 linter 制定樣式:PyLint、Flake8 或者帶上 --check
的 Black 。除非你使用 Black,否則請確保在一個檔案中指定配置選項,並簽入到版本控制系統中。
6、API 文件
使用 docstrings 來記錄模組、函式、類和方法。
你可以使用幾種樣式。我更喜歡 Google 風格的 docstrings,但 ReST docstrings 也是一種選擇。
Sphinx 可以同時處理 Google 風格和 ReST 的 docstrings,以將零散的文件整合為 API 文件。
7、零散文件
使用 Sphinx。(閱讀我們這篇文章。)教程很有用,但同樣重要的是要指明這是什麼、它有什麼好處、它有什麼壞處、以及任何特殊的考慮因素。
8、構建
使用 tox 或 nox 自動執行測試和 linter,並構建文件。這些工具支援“依賴矩陣”。這些矩陣往往會快速增長,但你可以嘗試針對合理的樣本進行測試,例如 Python 版本、依賴項版本以及可能安裝的可選依賴項。
9、打包
使用 setuptools 工具。寫一個 setup.py
和一個 setup.cfg
。如果同時支援 Python 2 和 3,請在 setup.cfg
中指定 universal 格式的 wheel。
tox 或 nox 應該做的一件事是構建 wheel 並對已安裝的 wheel 進行測試。
避免使用 C 擴充套件。如果出於效能或繫結的原因一定需要它們,請將它們放在單獨的包中。正確打包 C 擴充套件可以寫一篇新的文章。這裡有很多問題!
10、持續整合
使用公共持續工具。TravisCI 和 CircleCI 為開源專案提供免費套餐。將 GitHub 或其他倉庫配置為在合併拉請求之前需要先通過檢查,那麼你就不必擔心在程式碼評審中告知使用者修復測試或樣式。
11、版本
使用 SemVer 或 CalVer。有許多工具可以幫助你管理版本:incremental、bumpversion 和 setuptools_scm 等都是 PyPI 上的包,都可以幫助你管理版本。
12、釋出
通過執行 tox 或 nox 並使用 twine 將檔案上傳到 PyPI 上釋出。你可以通過在 DevPI 中“測試上傳”。
相關文章
- Python的事件溯源開源庫Python事件
- 前端你需要的各種開源庫前端
- 讓你的程式炫起來!少有人知道但超酷的 Python 進度條開源庫Python
- 阿里的Blink開源了,如何部署你知道嗎?阿里
- Python開源框架,你最中意哪一個?Python框架
- 這幾個好用的Python開源框架,你都知道嗎?Python框架
- Python常用的開源框架,這三個你必須知道!Python框架
- 開源如何有助於資料庫安全資料庫
- Linux下常見的開源資料庫,你知道幾個?Linux資料庫
- 如何為你的開源專案釋出一個版本
- 介紹一款用於搞亂資料庫ID的開源Python庫資料庫Python
- 十大Python機器學習常用庫python開發,你用過你個?Python機器學習
- Python 潮流週刊#47:當你的老師希望你去做開源Python
- 學習python最離不開的庫,你都知道哪個?Python
- 谷歌開源的 GAN 庫–TFGAN谷歌
- Android開源庫的製作Android
- 實用的Android開源庫Android
- 大咖說·對話開源|企業如何用好開源資料庫資料庫
- 一個檔案的開源專案,開啟你的開源之旅
- 12個在GitHub等開源網站中受歡迎的Python開源框架,你用過哪個Github網站Python框架
- 你知道python常見的庫有哪些嗎?五大python庫Python
- Python使用.NET開發的類庫來提高你的程式執行效率Python
- 微信小程式優質資源彙總:開源框架、開源App和開源庫,總有一款適合你(1)微信小程式框架APP
- beeshell:開源的 React Native 元件庫React Native元件
- Swift開源庫MoyaSwift
- rust常用開源庫Rust
- 00後開始學Python了,你卻原地打轉?常用的Python庫和示例送你Python
- 開源 5 款超好用的資料庫 GUI 帶你玩轉 MongoDB、Redis、SQL 資料庫資料庫GUIMongoDBRedisSQL
- 你如何估算專案資源的成本?
- 開源了!唱吧 UI 元件庫開源了!UI元件
- 我們是如何管理一個 1w+ stars 的開源倉庫的
- 你也可以訓練超大神經網路!谷歌開源GPipe庫神經網路谷歌
- 開源的誘惑——資料庫篇資料庫
- ChatGPT “眼”中的開源資料庫ChatGPT資料庫
- XCharts 開源庫介紹
- 30天幫你一步步學會Python的開源專案Python
- Python curses庫如何使用Python
- 最新Android開源庫、工具、開源專案整理分享Android