직접 만든 패키지를 PyPI에 업로드하면 "pip install" 로 쉽게 다운로드 할 수 있다.
- 규칙
- 패키지명과 모듈명은 동일하지 않아도 된다.
- PyPI에서 제시하는 규격대로 패키징해야 한다.
- PyPI에 등록되어 있는 패키지명과 겹치면 안된다.
패키지 폴더 구성
- 패키지 폴더 안에 setup.py 파일, packageTest 폴더 생성
- packageTest 폴더(모듈) 안에는 __init__.py, packageTest.py 파일 생성
setup.py
from setuptools import setup
setup(
name='ssung_package_test', # 패키지 명
version='0.0.1', # 버전
description='Test Package', # 배포할 패키지에 대한 설명
author='ssung', # 배포하는 사람의 이름
author_email='jinsung3325@gmail.com', # 배포하는 사람의 메일 주소
url='https://github.com/ssun-g/python_package_test', # 배포하는 패키지의 url
license='MIT', # MIT에서 정한 표준 라이센스 따른다
py_modules=['packageTest'], # 패키지에 포함되는 모듈
python_requires='>=3', # 해당 패키지를 사용하기 위해 필요한 파이썬 버전
install_requires=[], # 패키지 사용을 위해 필요한 추가 설치 패키지
packages=['packageTest'] # 패키지가 들어있는 폴더들
)
__init__.py
__all__ = ["packageTest"]
packageTest.py
def test_package():
print("This is package test")
패키지 빌드
- 앞서 작성한 패키지를 PyPI에 업로드 가능한 형식으로 패키지 변환 후 업로드
- 업로드를 위해 먼저 wheel, twine 패키지를 설치한다.
- wheel : 패키지 빌드
- twine : PyPI에 업로드
pip install wheel twine
다음 명령어로 패키지를 wheel 파일로 빌드한다.
python setup.py bdist_wheel
build, dist, ssung_package_test.egg-info 폴더가 생성된다.
패키지 업로드
패키지를 업로드 하기 위해 먼저 PyPI에 가입해야 함.
다음 명령어로 빌드한 패키지(dist/ssung_package_test_0.0.1-py3-none-any.whl)를 PyPI에 업로드 한다.
twine upload dist/ssung_package_test-0.0.1-py3-none-any.whl
- username : PyPI에 가입할 때 설정한 username
- password : PyPI에 가입할 때 설정한 password
패키지 다운로드 및 테스트
다운로드
- pip install {PACKAGE_NAME}
- PACKAGE_NAME은 setup.py에서 설정한 name이 된다.
pip install ssung_package_test
테스트
from packageTest import packageTest
packageTest.test_package()
※ 주의 사항 ※
- 한 번 배포된 패키지는 동일 버전으로 수정이 불가능하다.
- 예를 들어, ssung_package_test 0.0.1 버전 업로드 후, 0.0.1 버전은 PyPI에서 삭제는 가능하나 재 업로드는 불가함.
- 수정하기 위해 버전을 같이 수정해주어야 한다.
'Python' 카테고리의 다른 글
[Python] type()과 isinstance()의 차이 (0) | 2023.08.23 |
---|---|
[Python] requirements.txt에 링크 넣기 (0) | 2023.06.07 |
[Python] Private PyPI Server 구성하기 (0) | 2022.04.28 |
[Python] 다른 경로에 있는 폴더/파일 import 하기(__init__, __all__) (0) | 2022.02.11 |
[Python] postgreSQL 연동하기 (0) | 2022.01.23 |