지난 글에서 이미지를 이용해서 GIF 파일을 만드는 클래스 기반의 코드를 작성했다.
그럼 이제 웹 저장소에 배포를 해보자!
PyPI는 파이썬 공식 배포 저장소다.
pip install (패키지)
을 할때 PyPI에 있는 패키지를 가져오는 것이다.
PyPI는 GitHub에 비해서 배포가 조금 까다롭다.
1. https://pypi.org 회원가입
- 배포를 할 때, 닉네임과 비밀번호를 알아야한다.
잊지말고 기록해두자!
2. 프로젝트 구조 확인
- 폴더 이름을 반드시 ⭐️배포할 패키지 이름⭐️과 동일하게 작성해야 한다.
__init__.py
이 파일이 없으면 패키지로 인식하지 않는다.모듈화 해놓은 파일
클래스 형태로 작성한 파일을 적당한 이름으로 바꾸어서 함께 넣어주자.
README.md
: 사용자에게 제공하는 설명서setup.py
name
- 배포할 패키지이름 ( 모두 달라야함 )install_requires
- 의존관계 있는 패키지를 자동으로 설치해준다.setup.cfg(optional)
LICENSE
: 오픈 소스는 공개되어 사용, 복제, 배포,수정 할 수 있지만, 원 저작자의 라이선스 규칙에 따라야 한다.MANIFEST.in
: 파이썬과 관련 없지만 함께 배포되어야 한다고 명세해놓은 파일
필요한 패키지
wheel
: 실행파일 형식으로 만들어준다.setuptools
: 프로젝트를 압축해준다.설치 방법
1. 가상 환경일 경우python -m pip install --upgrade setuptools wheel
- 가상 환경이 아닐 경우 전역으로 설치
python -m pip install --user --upgrade setuptools wheel
빌드
- dist, build, ... 폴더가 생긴다.
python setup.py sdist bdist_wheel
배포할 준비가 되었다.
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 아이디와 비밀번호를 입력해야 한다!
5번까지 했다면 PyPI의 MyProject에 다음과 같이 프로젝트가 업로드 된 것을 확인할 수 있다.
설치
pip install (패키지 이름)
을 통해 내가 배포한 패키지를 설치할 수 있다.사용해보기
- 아래와 같은 형태로 import 할 수 있다.
from (패키지이름).(모듈화 파일 이름) import (클래스 이름)
# example from PNGtoGIF.converter import GifConverter as gfc
# setup.py
version='1.0.3',
# bash
$ python setup.py sdist bdist_wheel
$ python -m twine upload dist/*
정리
- 프로젝트 내에
__init__.py
파일이 없으면 패키지로 인식하지 않는다.- 프로젝트 폴더 이름은 반드시 ⭐️배포할 패키지 이름⭐️과 동일하게 작성해야 한다.
- PyPI에 배포를 하기위해 필요한 패키지 :
wheel
,setuptools
,twine
- 버전업을 하기위해선 setup.py의 버전을 바꾸고 빌드부터 업로드의 과정을 반복해주자.
깃허브에 배포하는 것은 PyPI에 비해 정말 간단하다.
패키지 구조를 repository에 push만 하면 된다.
git --version
new repository
를 눌러서 패키지를 배포할 저장소를 만들어주자
$ cd (배포 패키지 폴더) $ git init $ git add . : 모든 파일을 스테이징하겠다. $ git status : 스테이징 된 파일 상태 확인 $ git commit -m "commit message" : 원하는 커밋 메세지를 작성하면 된다. $ git remote add origin "repository 주소" $ git push origin master
저번에 Git 흐름을 한번 정리해놓아서 그런지 정말 쉬웠다. ( 🔗 link )
pip install git+repository 주소
PyPI 처럼 똑같이 import 해서 적용시키면 된다.
[출처]
인프런 - 모두를 위한 파이썬 : 필수 문법 배우기 Feat. 오픈소스 패키지 배포 (Inflearn Original)
마지막 강의 끝 ~ 🙂🙃🙂
(TMI)
강사님이 작성한 코드를.. 내가 배포한 것뿐인데 벅차올랐다 ,, 흑흑,,
내(가 옮겨적은) 첫 오픈소스 배포,,
직접 작성한 코드를 배포하면 어떨지 기대된다.
작고 귀여운 아이디어는 생각해놨고, 행동으로 옮기기만 하면된다..!