앞에서 파이썬 패키지를 관리하는 https://pypi.org
사이트 에서 요구하고 있는 2단계 보안 인증(2FA, Two-factor authentication)
내용 및 인증방법에 대하여 살펴보았습니다. 필자의 경우 휴대폰 인증 방법을 활용하여 인증을 완료 했습니다.
이번에 정리할 내용은 파이썬 신규 패키지를 등록하는 과정에 대해서 살펴보겠습니다. 예전에는 마치 Github 에서 신규 repository 를 생성하듯 버튼 몇번의 클릭만으로 가능했었는데, 앞의 2단계 인증을 거치면서 추가로 필요로 하는 내용에 대해 살펴보겠습니다.
프로젝트 시작하기
로그인
주요한 작업은 PC 에서 작업을 진행하게 되었습니다. 일반적인 로그인 과정은 다음과 같습니다.
2단계 로그인을 요구하는 화면에서, 2단계 인증되지 않은 기기인 경우에는 아랫 Login using recovery codes
를 클릭합니다.
클릭을 하면 위의 코드입력 화면이 나오게 됩니다. 앞에서 2단계 인증이 완료된 기기에 로그인을 하면 인증코드를 발급 받을 수 있습니다. 발급 화면에는 여러개의 코드가 생성 됩니다.
사용자는 이 중 한줄의 코드만 복사 붙여넣기를 하면 다른 기기에서 인증이 완료 됩니다.
Pypi Project
패키지를 생성 및 업로드하는 방법으로 GitHub 등의 저장소를 활용하는 방법과, Pypi API Token 을 활용하는 방법 2가지가 있습니다. Github 등의 저장소를 활용하는 방법은 저장소 세부설정을 추가로 알아야 합니다. 처음 작업하시는 분들이라면 이번에 설명할 API Token 방식을 추천 합니다.
Using API Token
Add Token
pypi.org/manage/account/ 설정 페이지로 이동하면 API Token 을 발급할 수 있습니다.
발급받은 API Token 값을 $HOME/.pypirc
파일로 저장하면 됩니다.
$HOME/.pypirc
[pypi]
username = __token__
password = pypi-Utperspi12iatis6om8nisvo25lup...
Build & Upload files
패키지 파일을 작업한 폴더에서 빌드파일을 생성한 뒤, twine
모듈을 활용하여 Pypi
저장소로 업로드를 하면 모든 작업이 완료 됩니다.
$ python setup.py sdist bdist_wheel
$ twine upload dist/*
동일한 작업을 유투브에 업로드한 내용이 있는데 다음과 같습니다.
Using 2FA Token
Authorized
변경된 내용은 Github
저장소를 연결하여 pypi
패키지를 등록하는 방법만 가능하다는 것 이었습니다. 다른 방법이 있는지는 앞으로 더 찾아봐야 알 수 있을거 같습니다. 아래 화면은 기존에 등록한 nltko
패키지 내용이 보여지는데, 그 아래로 스크롤을 내리면 Git
과 연결을 설정하는 창이 나옵니다.
Publishing of GitHub
Git 저장소와 연결에 대하여 자세한 설명은 Publish Python packages to PyPI with a python-lib cookiecutter template and GitHub Actions 참고하면 됩니다. 아랫 내용은 입력창에서 실제로 요구하는 내용 입니다.
아래의 예제는 https://github.com/datasette/datasette-test
저장소와 연결하는 내용 입니다. 이때 새롭게 추가된 내용이 있었는데 publish.yml
파일 입니다.
publish.yml
Github Docs - Using an environment 내용을 그대로 복사 붙여넣기 하는 방식으로 파일을 생성 하였습니다.
$ cat release.yml
name: Deployment
on:
push:
branches:
- main
jobs:
deployment:
runs-on: ubuntu-latest
environment: production
steps:
- name: deploy
# ...deployment-specific steps
이렇게 필요한 파일들을 추가한 예시내용은 다음과 같습니다. 아래 각각에 해당되는 파일들을 생성한 뒤 https://github.com/datasette/datasette-test
저장소에 업데이트를 하면 필요한 기본 설정은 완료 됩니다.
.
├── README.md
├── datasette-test
│ ├── __init__.py
│ └── code.py
├── pyproject.toml
├── publish.yml
├── setup.cfg
└── setup.py
Publish with CLI
이처럼 설정값을 입력 완료한 뒤, 패키지 빌드 파일을 생성한 뒤, Pypi 로 패키지 파일을 업로드 하면 됩니다. 업로드를 성공하면 Your projects
페이지에서 등록된 패키지 확인 및 버전 관리까지 가능 합니다.
# $ python setup.py bdist_wheel
# $ python -m twine upload dist/*
$ python3 -m pip install --upgrade build
$ python -m build
adding 'datasette-test-0.0.1.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Uploading distributions to https://upload.pypi.org/legacy/
Uploading datasette-test-0.0.1-py2.py3-none-any.whl
Uploading datasette-test-0.0.1-py2.py3-none-any.whl
100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 27.8/27.8 kB • 00:00 • 24.7 MB/s
View at:
https://pypi.org/project/datasette-test/0.0.1/