5-2. 오픈 소스 프로젝트 배포(PyPI, GitHub)

uoayop·2021년 3월 30일
0

Leaf와 Python

목록 보기
21/21
post-thumbnail

지난 글에서 이미지를 이용해서 GIF 파일을 만드는 클래스 기반의 코드를 작성했다.

그럼 이제 웹 저장소에 배포를 해보자!

PyPI

PyPI는 파이썬 공식 배포 저장소다.
pip install (패키지) 을 할때 PyPI에 있는 패키지를 가져오는 것이다.
PyPI는 GitHub에 비해서 배포가 조금 까다롭다.

순서

1. https://pypi.org 회원가입

  • 배포를 할 때, 닉네임과 비밀번호를 알아야한다.
    잊지말고 기록해두자!

2. 프로젝트 구조 확인

  • 폴더 이름을 반드시 ⭐️배포할 패키지 이름⭐️과 동일하게 작성해야 한다.
    • __init__.py 이 파일이 없으면 패키지로 인식하지 않는다.
    • 모듈화 해놓은 파일 클래스 형태로 작성한 파일을 적당한 이름으로 바꾸어서 함께 넣어주자.

3. 프로젝트 필수 파일 작성

  • README.md : 사용자에게 제공하는 설명서
  • setup.py
    • name - 배포할 패키지이름 ( 모두 달라야함 )
    • install_requires - 의존관계 있는 패키지를 자동으로 설치해준다.
  • setup.cfg(optional)
  • LICENSE : 오픈 소스는 공개되어 사용, 복제, 배포,수정 할 수 있지만, 원 저작자의 라이선스 규칙에 따라야 한다.
  • MANIFEST.in : 파이썬과 관련 없지만 함께 배포되어야 한다고 명세해놓은 파일

4. 배포에 필요한 패키지 설치 후 빌드업

필요한 패키지

  • wheel : 실행파일 형식으로 만들어준다.
  • setuptools : 프로젝트를 압축해준다.

설치 방법
1. 가상 환경일 경우

python -m pip install --upgrade setuptools wheel
  1. 가상 환경이 아닐 경우 전역으로 설치
python -m pip install --user --upgrade setuptools wheel

빌드

  • dist, build, ... 폴더가 생긴다.
python setup.py sdist bdist_wheel

5. PyPI 배포

배포할 준비가 되었다.
PyPI는 twine 패키지를 이용해서 배포하는 것을 권장하고 있다.

패키지 설치

pip install twine

나같은 경우에 이 코드는 아래와 같은 에러가 발생했다.

 pip install: python setup.py egg_info" failed with error code 1

( 관련 이슈 링크 참고🔗 )

sudo pip3 install twine

이렇게 설치하니 잘 실행됐다.

업로드

  • dist 폴더의 하위 모든 내용을 twine을 통해 PyPI로 업로드 해준다.
python -m twine upload dist/*
또는
twine upload dist/*
  • 이때 PyPI 아이디와 비밀번호를 입력해야 한다!

6. 설치 확인

5번까지 했다면 PyPI의 MyProject에 다음과 같이 프로젝트가 업로드 된 것을 확인할 수 있다.

설치
pip install (패키지 이름) 을 통해 내가 배포한 패키지를 설치할 수 있다.

사용해보기

  • 아래와 같은 형태로 import 할 수 있다.
    from (패키지이름).(모듈화 파일 이름) import (클래스 이름)
# example
from PNGtoGIF.converter import GifConverter as gfc

(번외) 버전업 하는 방법

  • setup.py의 version을 바꾸어주고, 빌드 ~ 업로드 과정을 다시 반복해주면 된다.
# setup.py
version='1.0.3',
# bash
$ python setup.py sdist bdist_wheel
$ python -m twine upload dist/*

정리

  1. 프로젝트 내에 __init__.py 파일이 없으면 패키지로 인식하지 않는다.
  2. 프로젝트 폴더 이름은 반드시 ⭐️배포할 패키지 이름⭐️과 동일하게 작성해야 한다.
  3. PyPI에 배포를 하기위해 필요한 패키지 : wheel, setuptools, twine
  4. 버전업을 하기위해선 setup.py의 버전을 바꾸고 빌드부터 업로드의 과정을 반복해주자.

GitHub

깃허브에 배포하는 것은 PyPI에 비해 정말 간단하다.
패키지 구조를 repository에 push만 하면 된다.

순서

1. GitHub 회원가입

2. git 설치 확인

git --version

3. git repository 생성

new repository를 눌러서 패키지를 배포할 저장소를 만들어주자

4. add -> commit -> push

$ cd (배포 패키지 폴더)
$ git init
$ git add . : 모든 파일을 스테이징하겠다.
$ git status : 스테이징 된 파일 상태 확인
$ git commit -m "commit message" : 원하는 커밋 메세지를 작성하면 된다.
$ git remote add origin "repository 주소"
$ git push origin master

저번에 Git 흐름을 한번 정리해놓아서 그런지 정말 쉬웠다. ( 🔗 link )

5. 설치 확인

pip install git+repository 주소

PyPI 처럼 똑같이 import 해서 적용시키면 된다.


[출처]

인프런 - 모두를 위한 파이썬 : 필수 문법 배우기 Feat. 오픈소스 패키지 배포 (Inflearn Original)


마지막 강의 끝 ~ 🙂🙃🙂

(TMI)
강사님이 작성한 코드를.. 내가 배포한 것뿐인데 벅차올랐다 ,, 흑흑,,
(가 옮겨적은) 첫 오픈소스 배포,,
직접 작성한 코드를 배포하면 어떨지 기대된다.
작고 귀여운 아이디어는 생각해놨고, 행동으로 옮기기만 하면된다..!

profile
slow and steady wins the race 🐢

0개의 댓글