DUICUO

Pythonライブラリをオープンソース化する方法

これら 12 のステップにより、リリースは確実に成功します。

Pythonライブラリを作成しました。素晴らしい出来栄えだと思います!もし誰もが簡単に使えるようになれば、もっと素晴らしいと思いませんか?Pythonライブラリをオープンソース化する際に考慮すべき点と具体的な手順をご紹介します。

1. ソースコード

コードを GitHub に配置します。GitHub には多くのオープンソース プロジェクトがあり、ユーザーがプル リクエストを送信するのが簡単です。

2. ライセンス

オープンソースライセンスを選びましょう。一般的に、MITライセンスは比較的優れており、制限が少ないライセンスです。特別な要件がある場合は、クリエイティブ・コモンズのライセンス選択ガイドを参考に、他のライセンスを選択することができます。最も重要なのは、ライセンスを選ぶ際に以下の3つのルールを覚えておくことです。

  • 独自のライセンスを作成しないでください。
  • 独自のライセンスを作成しないでください。
  • 独自のライセンスを作成しないでください。

3. README

README.rstという名前のファイル (ReStructured Text を使用してフォーマット) をプロジェクト ツリーの最上位レベルに配置します。

GitHub は ReStructured Text を Markdown のようにレンダリングしますが、ReST は Python のドキュメント エコシステムでより優れたパフォーマンスを発揮します。

4. テスト

テストを書きましょう。これはあなたにとっては役に立ちませんが、関連する機能の不具合を防ぐためのパッチを書きたい人にとっては非常に役立ちます。

テストは共同作業者間の共同作業に役立ちます。

一般的に、pytest で実行できればそれで十分です。他にもテストツールはありますが、それらを使う必要性はほとんどありません。

5. スタイル

リンター(PyLint、Flake8、またはBlack)を使用してスタイルを指定し、 --checkで指定します。Blackを使用しない場合は、設定オプションがファイルに指定され、バージョン管理システムにチェックインされていることを確認してください。

6. APIドキュメント

モジュール、関数、クラス、メソッドを文書化するには、docstring を使用します。

複数のスタイルを使用できます。私はGoogleスタイルのdocstringを好みますが、ReSTのdocstringも選択肢の一つです。

Sphinx は、Google スタイルと ReST ドキュメント文字列の両方を処理して、異なるドキュメントを API ドキュメントに統合できます。

7. 散らばった書類

Sphinx を使用します。(この記事をお読みください。) チュートリアルは役立ちますが、Sphinx とは何か、その利点、欠点、特別な考慮事項などを明確にすることも同様に重要です。

8. 建設

tox または nox を使用して、テストとリンターの実行を自動化し、ドキュメントを作成します。これらのツールは依存関係マトリックスをサポートしています。これらのマトリックスは急速に大きくなる傾向がありますが、Python のバージョン、依存関係のバージョン、インストールされている可能性のあるオプションの依存関係など、適切なサンプルに対してテストを試すことができます。

9. 包装

setuptools ユーティリティを使用してください。setup.py setup.pysetup.cfgを作成してください。Python 2 と 3 の両方がサポートされている場合は、 setup.cfgでユニバーサルホイール形式を指定してください。

tox または nox が行うべきことの 1 つは、ホイールを組み立て、インストールしたホイールをテストすることです。

C拡張機能の使用は避けてください。パフォーマンスやバインディング上の理由からどうしても必要な場合は、別々のパッケージにまとめてください。C拡張機能を適切にパッケージ化するには、1つの記事を書く必要があります。多くの問題が絡んでいるからです。

10. 継続的インテグレーション

公開されている永続化ツールを活用しましょう。TravisCIとCircleCIは、オープンソースプロジェクト向けに無料プランを提供しています。GitHubなどのリポジトリで、プルリクエストのマージ前にチェックを必須にするように設定すれば、コードレビュー中にユーザーにテストやスタイルの修正を通知する必要がなくなります。

11. バージョン

SemVerまたはCalVerを使用してください。バージョン管理に役立つツールは数多くあります。incremental、bumpversion、setuptools_scmはすべて、バージョン管理に役立つPyPIパッケージです。

12. リリース

tox または nox を実行し、twine を使用してファイルを PyPI にアップロードして公開します。DevPI でアップロードをテストできます。