[pypi] 나의 첫번째 pip 패키지 treesel 등록 Develop Tip

파이썬 패키지 관리자 중에 pip 가 대세라고 이전에 이야기 한 적이 있습니다.

따라서 최근에 파이썬 패키지 설치 시에는 모두 pip 로 통일하여 설치하고 있습니다.
그런데 필요에 따라 어떤 유틸리티를 만들어 그것을 이 pypi.python.org 에 등록하여
자신 뿐만 아니라 다른 사람들을 위해서 오픈할 수 있습니다.
(지금껏 죄송하게도 못했지만 앞으로는 조금씩 조금씩 다른 분들을 위해서 올려볼 예정입니다)

다음은 자신만의 파이썬 패키지를 만들고 그것을 pypi 에 등록시켜
인터넷이 연결된 곳이면 어디에서든지 pip로 등록하는 것을 해보고,
그 내용을 공유해 봅니다.


1) 사용자 등록 및 로그인

우선 https://pypi.python.org/pypi 에 들어가셔서,

우측상단의 "Register"를 누르고,

등록을 합니다. 이름도 몇자 이상이라 하고 암호도 대소문자 숫자 포함해야 하고 하는 등의 제약이 있었습니다.

등록을 마치고 이메일로 링크로 눌러 사용자 등록을 마치고는 위와 같이 로그인을 합니다.


2) 패키지 소스 생성

https://github.com/mcchae/treesel 에 있는 것처럼 treesel.py 라는 간단한 파이썬 프로그램을 만들어
보았습니다. 간단히 Curses 표준 라이브러리를 사용하여 현재 디렉터리부터 모든 하위 디렉터리를 보여주고
그 중에 하나를 방향키로 선택하여 해당 디렉터리를 출력하고 그 상위에서 해당 폴더로 이동하는 역할을 하는 것
입니다. 간단한 명령으로 일일이 디렉터리를 일일이 입력하지 않아도 이동할 폴더를 선택하도록 만든 것입니다.


3) .pypirc 파일 생성

위와 같이 $HOME/.pypirc 라는 파일을 만들어 

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username=사용자ID
password=암호

[pypitest]
repository=https://testpypi.python.org/pypi
username=사용자ID
password=암호

[server-login]
username:사용자ID
password: 암호

위와 같이 저장해 줍니다.


4) setup.cfg

setup.cfg 처럼 README.md 를 지정해 줍니다.

[metadata]
description-file = README.md


5) deploy

deploy_pypi.sh 를 실행하여 해당 패키지를 만들고, pypi에 등록하고 업로드 합니다.

pandoc 부분이 있는데 처음에는 README.rst 형식만 지정해야 하는 줄 알고,
마크다운으로 만들었던 README.md 에서 변환하였었는데 직접 README.md를 지정해도 되어
해당 명령은 코맨트로 막아 두었습니다.


# 1) 일단 해당 패키지의 버전을 구해옵니다.
VER=$(python -c "import treesel;print treesel.__version__")

# 2) dist 디렉터리에 패키지 결과 파일인, ...tar.gz 패키지 파일과 egg 파일을 만듧니다.
python setup.py sdist

# 3) twine 을 이용하여 등록 및 업로드 하게 되므로 pip 로 설치합니다.
pip install twine

# 4) twine으로 등록
twine register dist/treesel-$VER.tar.gz

# 5) twine으로 파일 업로드하기
twine upload dist/treesel-$VER.tar.gz

이렇게 하여 등록 완료 되었습니다.

등록이 완료되면 자신의 ID로 로그인 하면 위와 같이 등록된 것이 보입니다.

해당 패키지로 들어가 보면 위와 같이 올린 것들이 보입니다.
참고로 한번 올린 것을 동일하게 올리려고 하면 twine upload 명령에서 오류가 나옵니다.

버전을 올려서 다른 버전의 패키지로 올려야 가능합니다.

위에서 해당 버전 (0.1.5)의 files 링크를 눌러보면,

위와 같이 개별 작업을 할 수 있는 것 같습니다.


6) 패키지 설치 및 테스트

맥이나 리눅스에서 

$ pip install treesel
(시스템 파이썬에 설치하면 
$ sudo pip install treesel
이라고 합니다)

이라는 명령을 수행하여 
treesel 이라는 명령어를 실행할 수 있도록 만들고,

$ cd $(treesel $HOME) 과 같이 명령을 수행하거나
위의 https://github.com/mcchae/treesel 설명처럼 

tree_select() {
    pushd "$(treesel $@)"
}
alias ts=tree_select

과 같은 식으로 alias 를 걸어

원하는 디렉터리로 쉽게 이동할 수 있습니다.


지난번 tmux 를 이용한 터미널 이용 부분과 더불어 treesel을 이용하여
쉽게 작업 폴더로 이동한 작업을 할 수 있습니다.

첫번째 pypi 패키지 작업을 시행착오를 거쳐 해 보았습니다.


어느분께는 도움이 되셨기를...

핑백

  • 지훈현서 : [Python] pip list 시 --format=(legacy|columns) 과 같은 경고가 나오면 2017-01-31 17:42:15 #

    ... 바로 이전 블로그에서 pip로 설치할 수 있는 패키지 만드는 법을 올렸었는데요, 아마 맥이나 리눅스에서 최신 pip 로 list 명령을 내리다보면, $ pip listDEPRECATION: The defau ... more

  • 지훈현서 : [Python] pyenv, conda, virtualenv, pip, autoenv 2017-08-25 11:19:25 #

    ... 패키지 관리자가 생겼는데 바로, pip 입니다. PyPI - the Python Package Index 가 바로 그 해당 사이트 입니다.(지난번에 PyPI에 자신의 것을 올리는 법에 관해서 살펴본 적도 있습니다) 그런데 이렇게 시스템 디폴트 파이썬 인터프리터에 제삼 모듈을 마구잡이로 설치하다보면 아주 지저분하게 됩니다.언 ... more

덧글

댓글 입력 영역

구글애드텍스트