Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonモジュールを構造化するためのルールとは?プロジェクト構成のベストプラクティス

Pythonプロジェクトを整理された形で構築するには、定評のあるディレクトリ構造を採用するのが効果的です。ここでは、Kenneth Reitz氏が公開しているサンプルプロジェクト「samplemod」を例に、優れたプロジェクト構成の方法を紹介します。このプロジェクトは「sample」モジュールを作成するもので、ディレクトリ構造は以下のようになっています。

README.rst
LICENSE
setup.py
requirements.txt
sample/__init__.py
sample/core.py
sample/helpers.py
docs/conf.py
docs/index.rst
tests/test_basic.py
tests/test_advanced.py

各ファイル・ディレクトリの役割

README.rst

モジュールの概要説明、セットアップ手順、使い方などを記載するファイルです。プロジェクトの「顔」となるドキュメントなので、最初に読まれることを意識して、簡潔かつ分かりやすくまとめましょう。

LICENSE(ライセンス)

ライセンス本文や著作権に関する記述を含むファイルです。オープンソースとして公開する場合は、適切なライセンスを選択して明記することが重要です。

setup.py

Pythonにおけるマルチプラットフォーム対応のインストーラーであり、Makefileに相当する役割を果たすファイルです。コマンドラインでのインストールに慣れている方なら、「make && make install」が「python setup.py build && python setup.py install」に相当すると考えると分かりやすいでしょう。ユーザーのマシン上でプロジェクトをビルドするために使用されます。

requirements.txt

Pipのrequirementsファイルは、プロジェクトへの貢献に必要な依存パッケージ(テスト、ビルド、ドキュメント生成など)を指定します。プロジェクトに開発用の依存関係がない場合や、setup.py経由で開発環境を構築したい場合は、このファイルは必須ではありません。

docs/(ドキュメントディレクトリ)

プロジェクトのドキュメントを格納するディレクトリです。Sphinxなどのドキュメント生成ツールを使って、APIリファレンスやチュートリアルを管理するのが一般的です。

tests/(テストディレクトリ)

すべてのテストコードはこのディレクトリに配置します。最初は単一のテストファイルから始めても問題ありませんが、テストが増えてきたら、モジュール本体のディレクトリ構造に合わせてテストも整理すると、保守性が高まります。

sample/(モジュール本体)

実際のモジュールコードを格納するディレクトリです。モジュールが単一ファイルのみで構成される場合は、sample.pyという名前でリポジトリのルート直下に置いても構いません。ライブラリのコードを曖昧なsrcやpythonといったサブディレクトリに配置するのは避けましょう。また、モジュールをパッケージとして扱いたい場合は、__init__.pyファイルを含める必要があります。

  1. .bashrcファイルとは?役割と活用方法を徹底解説

    Linuxをしばらく使っている方、特にコマンドラインに慣れ始めた方なら、BASHがLinuxのシェルであることをご存じでしょう。BASHは「Bourne Again Shell」の略です。シェルにはcsh、zsh、dash、kornなど、さまざまな種類が存在します。シェルとは、ユーザーからコマンドを受け取り、それを実行してファイルシステム内の移動、プログラムの実行、デバイスとのやり取りといった操作を行うインタープリタのことです。Debian自体、Ubuntu、Linux Mintなど、多くのDebian系Linuxディストリビューションでは、BASHの代わりにDASHがシェルとして採用されてい

  2. Pythonの「モジュール」と「パッケージ」の違いとは?初心者向けにわかりやすく解説

    モジュールとパッケージの基本的な違いPythonでは、任意の .py ファイルはすべてモジュールとして扱われます。モジュール名は、拡張子 .py を除いたファイル名そのものであり、モジュール内部では __name__ 属性として参照できます。一方、パッケージとは複数のPythonモジュールをまとめたものです。具体的には、モジュール群が格納されたディレクトリに __init__.py ファイルが配置されているものを指します。この __init__.py の存在こそが、単なる「Pythonスクリプトの入ったフォルダ」と「パッケージ」を区別する目印となります。また、各階層のディレクトリにそれぞれ _