完全なパッケージ構造の作成
Python パッケージの基本原則と __init__.py ファイルの役割を理解したので、ベストプラクティスに従う、より完全なパッケージ構造を作成しましょう。これにより、より大きなプロジェクトを効果的に整理できます。
パッケージ構造のベストプラクティス
適切に整理された Python パッケージは、通常、次の構造に従います。
package_name/
├── __init__.py
├── module1.py
├── module2.py
├── subpackage1/
│ ├── __init__.py
│ └── module3.py
├── subpackage2/
│ ├── __init__.py
│ └── module4.py
├── README.md
├── setup.py
└── tests/
├── __init__.py
├── test_module1.py
└── test_module2.py
電卓パッケージ用に、この構造の簡略化されたバージョンを実装しましょう。
- README.md ファイルを作成します。
touch ~/project/calculator_package/README.md
- WebIDE で README.md ファイルを開き、次を追加します。
Calculator Package
基本的な電卓機能を提供するシンプルな Python パッケージ。
特徴
- 基本的な算術演算(加算、乗算)
- 高度な科学演算(平方根、累乗)
使用法
from calculator_package import add_two_numbers, multiply_two_numbers
from calculator_package.advanced import square_root, power
## Basic operations
result1 = add_two_numbers(5, 3)
result2 = multiply_two_numbers(4, 2)
## Advanced operations
result3 = square_root(16)
result4 = power(2, 3)
- tests ディレクトリを作成します。
mkdir ~/project/calculator_package/tests
touch ~/project/calculator_package/tests/__init__.py
- テストファイルを作成します。
touch ~/project/calculator_package/tests/test_basic.py
- WebIDE で
test_basic.py を開き、次を追加します。
import unittest
from calculator_package import add_two_numbers, multiply_two_numbers
class TestBasicOperations(unittest.TestCase):
def test_addition(self):
self.assertEqual(add_two_numbers(5, 3), 8)
self.assertEqual(add_two_numbers(-1, 1), 0)
def test_multiplication(self):
self.assertEqual(multiply_two_numbers(5, 3), 15)
self.assertEqual(multiply_two_numbers(-2, 3), -6)
if __name__ == '__main__':
unittest.main()
- パッケージ配布用の setup.py ファイルを作成します。
touch ~/project/setup.py
- WebIDE で
setup.py を開き、次を追加します。
from setuptools import setup, find_packages
setup(
name="calculator_package",
version="0.1.0",
author="Your Name",
author_email="your.email@example.com",
description="A simple calculator package",
packages=find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
python_requires=">=3.6",
)
- ユニットテストを実行しましょう。
cd ~/project
python3 -m calculator_package.tests.test_basic
次のような出力が表示されるはずです。
Calculator Package v0.1.0 initialized
..
----------------------------------------------------------------------
Ran 2 tests in 0.001s
OK
これにより、パッケージが適切に構造化されており、テストが正しく動作していることが確認できます。
Docstrings を使用したパッケージドキュメント
優れたドキュメントは、あらゆる Python パッケージに不可欠です。パッケージに適切な docstrings を追加しましょう。
- パッケージレベルの docstring を含めるように、
calculator_package/__init__.py ファイルを更新します。
"""
Calculator Package - A collection of calculator functions.
This package provides various calculator functions including basic
arithmetic operations and advanced scientific operations.
"""
## Import functions from modules
from .addition import add_two_numbers, add_multiple_numbers
from .multiplication import multiply_two_numbers, multiply_multiple_numbers
## Define package-level variables
__version__ = "0.1.0"
__author__ = "Your Name"
## Print a message when the package is imported
print(f"Calculator Package v{__version__} initialized")
## Import the advanced subpackage
from . import advanced
- Python の help 関数を使用して、docstring を表示できます。
cd ~/project
python3 -c "import calculator_package; help(calculator_package)"
これにより、パッケージドキュメントが表示されます。
Help on package calculator_package:
NAME
calculator_package - Calculator Package - A collection of calculator functions.
DESCRIPTION
This package provides various calculator functions including basic
arithmetic operations and advanced scientific operations.
PACKAGE CONTENTS
addition
advanced (package)
multiplication
tests (package)
DATA
__author__ = 'Your Name'
__version__ = '0.1.0'
FILE
/home/labex/project/calculator_package/__init__.py
このドキュメントは、ユーザーがパッケージの目的と機能を理解するのに役立ちます。