Python Package Structure#
This section provides guidance on your Python package's structure, code format, and style. It also reviews the various packaging tools you can use to build and publish your Python package.
If you want end-to-end tutorials, check out our tutorial series that starts by introducing what a Python package is.
If you are confused by Python packaging, you are not alone! The good news is that some great modern packaging tools ensure you follow best practices. Here, we review tool features and suggest tools you can use for your Python packaging workflow.
Checkout our beginning-to-end create a Python package tutorials
How this content is developed
All of the content in this guide has been vetted by community members, including maintainers and developers of the core packaging tools.
src レイアウト、フラットレイアウト、テストフォルダはどこに置くべきか? あなたのパッケージング知識のレベルに関係なく、このページは最新のpythonのベストプラクティスに従ったパッケージ構造を決める助けになるでしょう。
PythonパッケージをPyPIで公開するには、まずビルドする必要があります。 "ビルド" とは、パッケージのコードとメタデータをPyPIで公開できるような形式にすることです。 Pythonパッケージのビルドについての詳細はこちらをご覧ください。
Python パッケージにプロジェクトのメタデータを追加して、PyPI でのフィルタリングと、パッケージインストーラがパッケージをビルドしてインストールするために必要なメタデータの両方をサポートする方法を学びましょう。
パッケージングツール群についてもっと知りましょう。そして、どのツールがあなたに最適かを学びましょう。
純粋なPythonパッケージであれば、PyPIとconda-forgeのようなCondaチャネルの両方に公開するのは簡単です。 詳しくはこちら。
Semver (数値によるバージョン管理) と Calver (日付によるバージョン管理) は、パッケージをバージョン管理する2つの一般的な方法です。 どちらを選ぶべきでしょうか? 詳しくはこちら。
Black、blue、flake8、Ruff - あなたのパッケージがコードフォーマットのベストプラクティスに従っていることを確認するのに役立つツールはどれですか? オプションの詳細と、なぜこれが重要なのかについては、こちらをご覧ください。

選択可能な様々なフロントエンドビルドツールを示す図。 各ツールの詳細については、パッケージングツールのページを参照してください。#
注釈
査読にパッケージを投稿しようと考えているなら、査読が始まる前にpyOpenSciが行う最低限の editor checks を見てください。これらのチェックは、私たちにパッケージをレビューのために提出しようと計画している作者と、Pythonパッケージを作成し始めたばかりの人の両方にとって、調べるのに便利です。
ここで学べること#
Pythonパッケージングガイドのこのセクションでは、以下のことを説明します:
Provide an overview of the options available to you when packaging your code.
ニーズを満たし、かつ既存の基準をサポートするツールやアプローチを提案します。
Suggest tools and approaches that will allow you to expand upon a workflow that may begin as a pure Python code and evolve into code that requires addition layers of complexity in the packaging build.
私たちの提案を、現在受け入れられている PEPs (Python Enhancement Protocols) と Scientific Python community SPECs に合わせます。
私たちのコミュニティ内での一貫性を維持するために、NumpyやSciPyなどのScientific Pythonのコアパッケージの開発者によって実装されている既存のベストプラクティスとも連携しています。
pyOpenSciのパッケージング推奨のガイドライン#
Pythonプログラミング言語の柔軟性は、Pythonパッケージを作成するための多様なツールオプションに適しています。Pythonはとても柔軟で、他の言語を包み込むように使える数少ない言語のひとつです。Pythonが他の言語をラッピングする能力は、Pythonが "glue" language" と表現されるのをよく耳にする理由の1つです。
純粋なPythonパッケージを構築するのであれば、パッケージングのセットアップは単純でよいです。しかし、科学的なパッケージの中には、CやC++のような他の言語で書かれた拡張機能やツールをサポートする必要があり、複雑な要件を持つものがあります。
Python の様々な使い方をサポートするために、Python パッケージを作成する方法はたくさんあります。 このガイドでは、パッケージングのアプローチとツールを提案します:
パッケージングに慣れていない人たちにとって、私たちが最善で最も採用しやすいと考えるもの。
よく整備され、文書化されていると思われるツール。
この (科学的な) Pythonエコシステム全体でパッケージングアプローチを標準化するという共通の目標。
ここでは、私たちの提案を、最新の、受け入れられている Pythonコミュニティ と 科学コミュニティ に合わせることも試みています。
このガイドの提案はpyOpenSciのレビュー要件ではありません
このセクションのパッケージレイアウトの提案は、参考になることを意図しています。 これらは、あなたのパッケージがpyOpenSciオープンソースエコシステムにレビューされ、受け入れられるための特定の要件ではありません。
pyOpenSciのPythonパッケージ審査要件をお探しの方は、 package scope page と review requirements in our author guide をご覧ください!