앞에서 파이썬 패키지를 관리하는 https://pypi.org 사이트 에서 요구하고 있는 2단계 보안 인증(2FA, Two-factor authentication) 내용 및 인증방법에 대하여 살펴보았습니다. 필자의 경우 휴대폰 인증 방법을 활용하여 인증을 완료 했습니다.

이번에 정리할 내용은 파이썬 신규 패키지를 등록하는 과정에 대해서 살펴보겠습니다. 예전에는 마치 Github 에서 신규 repository 를 생성하듯 버튼 몇번의 클릭만으로 가능했었는데, 앞의 2단계 인증을 거치면서 추가로 필요로 하는 내용에 대해 살펴보겠습니다.


프로젝트 시작하기

로그인

주요한 작업은 PC 에서 작업을 진행하게 되었습니다. 일반적인 로그인 과정은 다음과 같습니다.

사용자 로그인

2단계 인증요구 화면

2단계 로그인을 요구하는 화면에서, 2단계 인증되지 않은 기기인 경우에는 아랫 Login using recovery codes 를 클릭합니다.

2단계 인증코드 입력화면

클릭을 하면 위의 코드입력 화면이 나오게 됩니다. 앞에서 2단계 인증이 완료된 기기에 로그인을 하면 인증코드를 발급 받을 수 있습니다. 발급 화면에는 여러개의 코드가 생성 됩니다.

입력기기 로그인 하기

recovery Code 발급

사용자는 이 중 한줄의 코드만 복사 붙여넣기를 하면 다른 기기에서 인증이 완료 됩니다.

인증완료 화면


Publish

변경된 내용은 Github 저장소를 연결하여 pypi 패키지를 등록하는 방법만 가능하다는 것 이었습니다. 다른 방법이 있는지는 앞으로 더 찾아봐야 알 수 있을거 같습니다. 아래 화면은 기존에 등록한 nltko 패키지 내용이 보여지는데, 그 아래로 스크롤을 내리면 Git 과 연결을 설정하는 창이 나옵니다.

Account >> Publising 화면

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 파일 입니다.

github.com/datasette/datasette-test 등록

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/

Project 관리 페이지


참고사이트