💬

Pythonのパッケージの基本的なディレクトリ構成

2023/03/29に公開

Pythonのディレクトリ構成は、プロジェクトやライブラリによって異なる場合がありますが、一般的な構成を以下に示します。

基本的なディレクトリ構成

プロジェクト名/
│
├─ __init__.py
├─ main.py (メインの実行ファイル)
│
├─ パッケージ1/
│   ├─ __init__.py
│   ├─ モジュール1.py
│   └─ モジュール2.py
│
├─ パッケージ2/
│   ├─ __init__.py
│   ├─ モジュール3.py
│   └─ モジュール4.py
│
├─ tests/ (テスト用ディレクトリ)
│   ├─ __init__.py
│   ├─ test_モジュール1.py
│   └─ test_モジュール2.py
│
└─ setup.py (パッケージング用スクリプト)
  • __init__.pyファイルは、ディレクトリがPythonパッケージであることを示すための空ファイルです。
  • main.pyは、プロジェクトのエントリーポイントであり、実行可能なスクリプトです。
  • 各パッケージディレクトリには、関連するモジュールが含まれています。
  • testsディレクトリには、各モジュールのテストケースが含まれています。
  • setup.pyは、Pythonパッケージのインストールと配布のためのスクリプトです。

各ファイルのサンプルコード

main.py:

from パッケージ1 import モジュール1, モジュール2
from パッケージ2 import モジュール3, モジュール4

if __name__ == "__main__":
    モジュール1.関数1()
    モジュール2.関数2()
    モジュール3.関数3()
    モジュール4.関数4()

パッケージ1/モジュール1.py:

def 関数1():
    print("モジュール1の関数1が実行されました。")

パッケージ1/モジュール2.py:

def 関数2():
    print("モジュール2の関数2が実行されました。")

パッケージ2/モジュール3.py:

def 関数3():
    print("モジュール3の関数3が実行されました。")

パッケージ2/モジュール4.py:

def 関数4():
    print("モジュール4の関数4が実行されました。")

tests/test_モジュール1.py:

import unittest
from パッケージ1 import モジュール1

class Testモジュール1(unittest.TestCase):
    def test_関数1(self):
        # ここにテストケースを記述してください。
        pass

tests/test_モジュール2.py:

import unittest
from パッケージ1 import モジュール2

class Testモジュール2(unittest.TestCase):
    def test_関数2(self):
        # ここにテストケースを記述してください。
        pass

setup.py:

from setuptools import setup, find_packages

setup(
    name="プロジェクト名",
    version="0.1.0",
    packages=find_packages(),
    install_requires=[
        # 依存パッケージを記述してください。
    ],
    entry_points={
        "console_scripts": [
            "プロジェクト名 = プロジェクト名.main:main",
        ],
    },
)

Discussion