패키지 빌드 및 배포
이제 추가 파일이 있는 Python 패키지를 생성하고 액세스할 수 있는지 확인했으므로 이 패키지를 빌드하고 배포하는 방법을 알아보겠습니다.
설정 스크립트 업데이트
패키지를 빌드하기 전에 setup.py 파일을 업데이트하여 더 많은 메타데이터와 요구 사항을 포함해 보겠습니다.
cd ~/project
cat > setup.py << 'EOF'
from setuptools import setup, find_packages
setup(
name="mypackage",
version="0.1.0",
packages=find_packages(),
## Include data files
package_data={
"mypackage": ["config.ini", "data/*.txt"],
},
## Dependencies
install_requires=[
"setuptools",
],
## Metadata
author="Your Name",
author_email="your.email@example.com",
description="A simple Python package with additional files",
keywords="sample, package, data",
url="https://example.com/mypackage",
classifiers=[
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
],
python_requires=">=3.6",
)
EOF
소스 및 휠 배포판 빌드
Python 패키지는 여러 형식으로 배포할 수 있지만 가장 일반적인 형식은 다음과 같습니다.
- 소스 배포판 (sdist): 소스 코드 및 추가 파일을 포함하는 tarball
- 휠 배포판 (bdist_wheel): 빌드 없이 설치할 수 있는 사전 빌드된 패키지
두 유형의 배포판을 모두 생성해 보겠습니다.
## Make sure we have the latest build tools
pip install --upgrade setuptools wheel
## Build the distributions
python setup.py sdist bdist_wheel
배포판이 생성되었음을 나타내는 출력이 표시되고 dist 디렉토리에 새 파일이 나타납니다.
dist 디렉토리의 내용을 확인해 보겠습니다.
ls -l dist
다음과 같은 두 개 이상의 파일이 표시됩니다.
.tar.gz 파일 (소스 배포판)
.whl 파일 (휠 배포판)
배포 파일에서 패키지 설치
이제 배포 파일 중 하나에서 패키지를 설치하는 것을 테스트해 보겠습니다. 먼저 개발 버전을 제거해 보겠습니다.
pip uninstall -y mypackage
이제 휠 배포판을 설치해 보겠습니다.
pip install dist/mypackage-0.1.0-py3-none-any.whl
패키지가 성공적으로 설치되었음을 나타내는 출력이 표시됩니다.
패키지가 설치되었는지, 그리고 여전히 추가 파일에 액세스할 수 있는지 확인해 보겠습니다.
python -c "import mypackage; print(mypackage.read_config())"
이것은 config.ini 파일의 내용을 출력해야 합니다.
[config]
debug = true
log_level = INFO
패키지 게시
실제 시나리오에서는 일반적으로 패키지를 Python Package Index (PyPI) 에 게시하여 다른 사용자가 pip install mypackage를 사용하여 설치할 수 있도록 합니다. 여기에는 다음이 포함됩니다.
-
PyPI (https://pypi.org/) 에서 계정 생성
-
twine과 같은 도구를 사용하여 배포판 업로드:
pip install twine
twine upload dist/*
그러나 이 랩에서는 로컬에서 배포판을 생성하는 것으로 마무리합니다. 이제 다른 사용자가 배포하고 설치할 수 있는 추가 파일이 있는 완전한 Python 패키지가 있습니다.
생성한 내용 요약
- 모듈 및 추가 파일이 있는 Python 패키지
- 배포판에 이러한 파일을 포함하는 설정 스크립트
- 코드에서 이러한 파일에 액세스하는 함수
- 배포 준비가 된 소스 및 휠 배포 파일
이 구조는 향후 생성하려는 모든 Python 패키지에 대한 견고한 기반을 제공합니다.