반응형
16.1 프로젝트 디렉토리 구조
효율적인 프로젝트 관리를 위해서는 디렉토리 구조를 잘 설계하는 것이 중요합니다. 일반적으로 파이썬 프로젝트는 다음과 같은 구조를 갖습니다.
my_project/
├── my_project/
│ ├── __init__.py
│ ├── module1.py
│ ├── module2.py
│ └── ...
├── tests/
│ ├── __init__.py
│ ├── test_module1.py
│ ├── test_module2.py
│ └── ...
├── docs/
│ ├── conf.py
│ ├── index.rst
│ └── ...
├── setup.py
├── README.md
├── requirements.txt
└── .gitignore
- my_project/: 프로젝트의 실제 코드가 위치하는 디렉토리입니다.
- tests/: 테스트 코드가 위치하는 디렉토리입니다.
- docs/: 프로젝트 문서가 위치하는 디렉토리입니다.
- setup.py: 패키지 배포를 위한 설정 파일입니다.
- README.md: 프로젝트에 대한 설명을 담고 있는 파일입니다.
- requirements.txt: 프로젝트에 필요한 패키지 목록을 담고 있는 파일입니다.
- .gitignore: 버전 관리에서 제외할 파일 및 디렉토리를 지정하는 파일입니다.
16.2 setup.py와 setuptools
setup.py
파일은 패키지를 배포하기 위한 메타데이터와 설정 정보를 담고 있습니다. setuptools
를 사용하여 패키지를 관리합니다.
setup.py 기본 예제
from setuptools import setup, find_packages
setup(
name='my_project',
version='0.1',
packages=find_packages(),
install_requires=[
'numpy',
'pandas',
],
entry_points={
'console_scripts': [
'my_command=my_project.module1:main_function',
],
},
author='Your Name',
author_email='your.email@example.com',
description='A description of your project',
long_description=open('README.md').read(),
long_description_content_type='text/markdown',
url='https://github.com/yourusername/my_project',
classifiers=[
'Programming Language :: Python :: 3',
'License :: OSI Approved :: MIT License',
'Operating System :: OS Independent',
],
python_requires='>=3.6',
)
setup.py 주요 항목 설명
name
: 패키지 이름version
: 패키지 버전packages
: 포함할 패키지 목록 (find_packages()
를 사용하여 자동으로 찾음)install_requires
: 의존 패키지 목록entry_points
: 스크립트와 명령줄 도구 정의author
: 작성자 이름author_email
: 작성자 이메일description
: 패키지 설명long_description
: 패키지의 긴 설명 (주로 README 파일에서 읽어옴)long_description_content_type
: 긴 설명의 콘텐츠 타입 (일반적으로 'text/markdown')url
: 프로젝트 URLclassifiers
: 패키지 분류 정보python_requires
: 요구 파이썬 버전
16.3 패키지 배포 (PyPI)
파이썬 패키지 인덱스(PyPI)에 패키지를 배포하면 다른 사용자들이 패키지를 설치하고 사용할 수 있습니다.
Twine 설치
pip install twine
패키지 빌드
python setup.py sdist bdist_wheel
PyPI에 업로드
twine upload dist/*
PyPI 테스트 서버에 업로드 (선택 사항)
실제 배포 전에 PyPI 테스트 서버를 사용하여 패키지를 업로드하고 테스트할 수 있습니다.
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
패키지 설치
다른 사용자는 다음 명령어를 사용하여 PyPI에 업로드된 패키지를 설치할 수 있습니다.
pip install my_project
반응형
'Python 문법 > Python 기본 문법(3.10 기준)' 카테고리의 다른 글
[python3.10 기본] 18. 고급 함수 (0) | 2024.07.02 |
---|---|
[python3.10 기본] 17. 고급 데이터 구조 (0) | 2024.07.02 |
[python3.10 기본] 15. 테스트와 디버깅 (0) | 2024.07.02 |
[python3.10 기본] 14. 형 힌팅과 타입 검사 (0) | 2024.07.02 |
[python3.10 기본] 13. 비동기 프로그래밍 (0) | 2024.07.02 |