파이썬 패키지 만드는 과정과 필수적으로 지켜야할 규칙을 소개합니다.
프로젝트 디렉토리 생성
패키지의 시작점이 될 루트 디렉토리를 생성합니다.
mkdir my_package
cd my_package
패키지 명을 지정할 때 주의할 점은 다음과 같습니다.
- 소문자 사용: 패키지 이름은 모두 소문자로 작성해야 합니다. 예를 들어, "my_package"와 같이 모두 소문자로 작성합니다.
- 밑줄(_) 사용: 이름에 밑줄을 사용할 수 있습니다. 밑줄은 단어를 구분하는 데 사용됩니다.
- 유일한 이름: 패키지 이름은 유일해야 합니다. "https://pypi.org/" 에서 검색해보고 지정하기를 추천드립니다.
디렉토리 구조
일반적인 디렉토리 구조는 아래와 같습니다.
my_package/
__init__.py
module1.py
module2.py
subpackage1/
__init__.py
submodule1.py
submodule2.py
subpackage2/
__init__.py
submodule3.py
위 구조에서 subpackage1의 submodule1 모듈을 사용하고자 할 땐, 아래와 같이 임포트 할 수 있습니다.
from my_package.subpackage1 import submodule1
# submodule1.py 내의 함수 또는 변수 사용
result = submodule1.some_function()
__init__.py 파일
파이썬 패키지를 만들 때 필요한 파일은 __init__.py 입니다.
이 파일은 패키지 디렉터리 내에 위치하며, 해당 디렉터리가 패키지로 인식되도록 하는 역할을 합니다.
파이썬 3.3 버전부터는 __init__.py 파일 없이도 디렉터리를 패키지로 인식하는 것이 허용되긴 하나,
이전 버전과의 호환성을 유지하기 위해 생성하는 것을 추천드립니다.
파일은 비어 있을 수도 있고, 패키지 초기화 코드, 패키지 수준의 변수 및 설정, 패키지 내의 모듈을 가져오는 등의 역할을 할 수 있습니다.
아래 내용은 선택 사항 입니다.
버전 관리
패키지의 버전 관리를 효과적으로 수행하여 버전 간의 호환성을 관리하는 것이 좋습니다.
일반적으로 패키지 디렉토리 내에 __version__.py 또는 version.py와 같은 파일을 생성하여 버전 정보를 유지합니다.
버전 번호 외에도 패키지 정보, 저작권 정보, 라이선스 등 다른 메타데이터를 포함하는 경우가 많습니다.
# my_package/__version__.py
__version__ = "1.0.0"
의존성 관리
패키지가 다른 패키지에 의존하는 경우, 의존성 관리 도구(예: pip)를 사용하여 필요한 라이브러리를 설치하고,
requirements.txt 파일에 의존성 목록을 기록하는 것이 좋습니다.
numpy~=1.26.1
pandas~=2.1.1
scikit-learn~=1.3.1
tqdm~=4.66.1
torch~=2.1.0
transformers~=4.34.1
문서화
코드와 패키지를 문서화하여 다른 사용자가 사용법을 이해하도록 도와줍니다.
대표적인 문서화 라이브러리로는 Sphinx가 있습니다. pip를 통해 설치가 가능하고 아래 구조처럼 생성됩니다.
my_documentation/
conf.py
index.rst
Makefile
make.bat
_build/
_static/
_templates/
패키지 내의 모든 모듈과 서브패키지에 대한 문서화를 추가하는 것이 중요합니다.
이를 위해 각 모듈 및 서브패키지의 .rst 파일을 생성하고 내용을 작성해야 합니다.
문서화 작업이 완료되면 html, pdf 등 원하는 형식의 문서를 생성합니다.