두 손끝의 창조자

내 패키지, 모듈을 pypi에 업로드 하기 본문

Python

내 패키지, 모듈을 pypi에 업로드 하기

codinglog 2023. 10. 30. 14:20

일단 pip 를 한번 업뎃 해주고

python -m pip install --upgrade pip

프로젝트를 만든다.

프로젝트 구조는 아래처럼 만든다.

project_directory/
└── src/
    └── package_name/
        ├── __init__.py
        └── module_name.py

__init__.py 는 빈 상태로 두고
module_name.py 는 로직을 담는다.

라이선스 파일을 추가

project_directory/
├── LICENSE
├── pyproject.toml
├── README.md
├── src/
│   └── package_name/
│       ├── __init__.py
│       └── module_name.py
└── tests/

tests 는 빈 폴더로 두어도 된다.

pyproject.toml 파일에 pipbuild 같은 툴이 어떤 빌드 툴을 쓸 것인지 정의할 수 있다.
Hatchling, setuptools, Flit, PDM 같은 도구를 설정할 수 있다.

hatchling

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

setuptools

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

근데 나는 생략 함

프로젝트의 메타 정보를 pyproject.toml 파일에 넣는다.

[project]
name = "package_name"
version = "0.0.1"
authors = [
  { name="이름이름", email="이메일이메일" },
]
description = "프로젝트 설명설명"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
    "Programming Language :: Python :: 3",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
]

[project.urls]
"Homepage" = "프로젝트 홈페이지"
"Bug Tracker" = "프로젝트 버그 트래킹"

리드미 파일에 자세한 설명을 넣고 라이선스는 이 프로젝트의 라이선스 내용을 넣는다.

난 MIT 라이선스를 적용했다.

빌드

build 모듈을 이용해서 빌드를 할 건데 모듈을 일단 설치해야함

python -m pip install --upgrade build

그리고 pyproject.toml 파일이 있는 곳에서 빌드 명령을 한다.

python -m build

그람 dist 디렉토리가 생기면서 소스 알카이브와 배포 파일이 생긴다.

업로드

https://pypi.org 에 가입한다. 가입하면 메일 인증하고 2차 인증을 등록하라고 한다.
2차 인증 복원 키 코드를 생성하고 잃어버리지 않도록 보관한다.

생성된 키코드 하나를 인증을 하면 큐알 코드로 인증코드를 준다.
폰으로 스캔하면 인증코드 6자리가 보이는데 고걸 화면 인증코드 입력난에 넣어서 인증을 해준다.

그람 2차 인증 완료

api키를 생성한다. 2차 인증을 등록했기 떄문에 업로드 할 때 아이디, 패스워드로는 업로드 할 수 없다.

api키를 생성하고 생성된 키를 ~/.pypirc 파일을 만들어서 붙여 넣는다.
내용은

[pypi]
  username = __token__
  password = [복사한 키 내용]

이렇게 구성한다.

패키지를 배포하기 위해 twine이라는 모듈을 설치한다.

python -m pip install --upgrade twine

배포 명령을 내려서 업로드 한다.

python -m twine upload dist/*
반응형
Comments