티스토리 뷰

 파이썬을 시작한지 1년이 넘어가는 시점에서, 개발 과정이 어느정도 정형화되어, 개발했었던 혹은 개발할 코드들을 오픈소스화 하려는 필요성이 생겼다. GitHub 에 소스 코드를 공개하고, 소프트웨어를 패키지화하여 PyPI 에 등록하여 누구나 편리하게 pip install 명령어 하나로 설치할 수 있는 환경은 굉장히 강력했다. GitHub 에서는 꼭 개발자가 아니더라도 번역, 테스트, 이슈제기 등 다양한 방면으로 프로젝트에 기여할 수 있고, PyPI 는 개인 개발자도 너무나 쉽게 패키지를 등록하고 이를 누구나가 쉽게 설치할 수 있다.

 관련 자료들은 인터넷에서 쉽게 찾을 수 있으나 그 과정을 가볍게 적어놓은 글은 찾기 어려웠다. 마침 하나의 새로운 프로젝트를 생성하면서 그 과정을 최대한 간략하게 정리하는 것을 목표로 이 글을 작성하려한다.

 GitHub Repository 생성, 로컬 저장소 연결

 가장 먼저 할 일은 GitHub 에서 Repository 를 생성하는 일이다. GitHub 에 로그인하여 Your Repositories 를 선택하면, 초록색 New 버튼을 쉽게 찾을 수 있다.

 민망할 정도로 쉽게 Repository 를 생성할 수 있다. Repository 생성 단계에서 이름만 정해주면 바로 생성된다. README, .gitignore 를 Repository 생성과 동시에 만들어주는 옵션이 있으나, 이 글에서 다룰 내용은 아니므로 그냥 넘어간다. Repository 가 비어있는 상태로 생성되고, git clone 을 할 수 있는 url 이 주어진다. 이 url 을 복사해둔다.

 Git Bash 를 실행시키고, 로컬 저장소를 생성하고 싶은 위치에 가서 git clone 명령어를 수행시키면, Repository 이름의 폴더가 생성되고 해당 폴더에 소스 코드가 받아진다. 물론, 빈 Repository 이므로 폴더만 만들어진다.

 - git clone url(위에서 복사해둔 GitHub 의 Repository url)

 작업 진행 후, GitHub 에 파일 업로드

 빈 로컬 저장소에 작업을 진행하고 나면 GitHub 에 올릴 파일이 준비된다. 이 글에서 예제로 다루고 있는 theo-python-message 를 위해 README.md, .gitignore, LICENSE, 세개의 기본 파일과 폴더 구조, 빈 파이썬 소스 코드를 준비하였다.

 Git Bash 에서 로컬 저장소로 이동한 후, 'git status' 명령을 통해, 업로드할 파일을 확인한 후, 'git add .', 'git commit -m 'Commit 메시지'' 를 입력하여, 로컬 저장소에 업데이트 기록을 저장한다.

 'git log' 명령을 통해, 로컬 저장소에 정상적으로 업데이트 기록이 저장됨을 확인 한 후, 'git push' 명령으로 로컬 저장소의 기록을 GitHub Repository 에 업데이트한다.

 업데이트 된 내용은 GitHub 의 Repository 페이지에서 확인할 수 있다. 여기까지 했다면, GitHub 의 기본 사용법은 모두 익혔다고 볼 수 있다.

 Package 생성, 그리고 PyPI 등록

 이제 소스 코드를 Package 화하고 그것을 PyPI 에 등록할 차례다. 일반적으로 setuptools, wheel, twine 을 이용한 방법을 사용한다. 우선 이 세개의 Pakeage 를 'pip install package_name' 명령을 통해 설치해야 한다.

 소스 코드를 Package 화 하기 위해서는 위와 같이 setup.py 파일을 생성해야 한다. 생성하기 위한 인자값은 수도 없이 많으나 그 중, 꼭 설정해야 하거나, 간단한 부분만 사용하였다.

 install_requires 는 'pip install' 명령을 통해 설치할 수 있는 Package 명의 리스트다. 배포한 Package 가 설치될 때에 자동으로 설치된다. packages 는 소스 코드의 위치인데, 다른 자료들에서는 find 함수와 __init__.py 파일을 통해 큰 프로젝트를 설정하지만, 예제는 간단한 구조, 작은 프로젝트이므로 직접 구성하였다.

 준비가 모두 끝나면, 'python setup.py bdist_wheel' 명령을 통해 Package 를 생성한다. Package 가 만들어지면 dist 폴더안에 xxx.whl 파일이 생성되고, 이 파일을 'twine upload xxx.whl' 명령을 통해 PyPI 에 등록하면 된다. 등록하는 과정에서 PyPI 의 계정 정보(아이디, 비밀번호) 를 입력하면 된다.

 등록이 완료되면, PyPI 사이트 (https://pypi.org/) 에서 package_name 으로 검색할 수 있고, 'pip install package_name' 명령을 통해 누구나 쉽게 설치할 수 있다.

댓글