완전한 패키지 구조 만들기
이제 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 패키지에 필수적입니다. 패키지에 적절한 docstring 을 추가해 보겠습니다.
- 패키지 수준 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
이 문서는 사용자가 패키지의 목적과 기능을 이해하는 데 도움이 됩니다.