[입 개발] Python Package 등록하기 – pypi

Python을 써 본 것은 오래되었지만, 실제로 이걸로 패키지를 만들어본 적은 거의 없었습니다. python c extension을 몇번 만들기는 했지만, 뭐, 내부적으로 잠시만 써봤기 때문에, 그런데 이번에 python-guoid를 만들어보면서,  이걸 pip로 인스톨되게 pypi에 어떻게 등록할 수 있을까에 대해서 찾아보고 적용르 해보았습니다.

따로, 인증을 받는 과정이 특별히 없기 때문에, 그렇게 어렵지는 않습니다. 먼저 setup.py만 잘 만들면 거의 모든게 끝납니다. 그리고 http://pypi.python.org/pypi 에서 일단 계정을 생성합니다. 그리고 다음과 같은 순서를 지키면 등록이 됩니다. 자세한 정보는 다음 페이지를 보시면 됩니다. http://docs.python.org/2/distutils/index.html

1. 먼저 pypi를 계정 정보를 가져와야 합니다.

<br /><br />python setup.py register<br /><br />

이러면 다음과 같은 선택지가 나오게 됩니다.

<br />&lt;pre&gt;running register<br />We need to know who you are, so please choose either:<br /><%%KEEPWHITESPACE%%>    1. use your existing login,<br /><%%KEEPWHITESPACE%%>    2. register as a new user,<br /><%%KEEPWHITESPACE%%>    3. have the server generate a new password for you (and email it to you), or<br /><%%KEEPWHITESPACE%%>    4. quit<br />Your selection [default 1]:&lt;/pre&gt;<br />

아까 계쩡을 만들어 뒀다면 그냥 1을 선택하고 아이디 패스워드를 입력하면 됩니다. 그러면 ~/.pypire 라는 파일이 생성되고 안의 내용이 다음과 같은지 확인합니다.

<br />&lt;pre&gt;[distutils]<br />index-servers =<br /><%%KEEPWHITESPACE%%>    pypi<br /><br />[pypi]<br />repository: &lt;repository-url&gt;<br />username: &lt;username&gt;<br />password: &lt;password&gt;&lt;/pre&gt;<br />

그 다음은 이제 실제로 올린 패키지를 만듭니다.

<br /><br />python setup.py sdist<br /><br />

sdist는 소스 패키지를 만드는 것이고 bdist를 이용해서 바이너리 패키지도 만들 수 있지만 이것은 필요없습니다.

최종적으로 다음 명령으로 등록이 가능합니다. 

<br /><br />python setup.py sdist upload<br /><br />

ps. 제가 잘못 알고 있던 부분을 수정합니다. python setup.py upload 만으로 올라가지 않고 python setup.py sdist upload 를 이용해야 합니다. 홍민희님과 박영록님 말씀을 빌리자면,

python setup.py a b c 이런 식으로 쓰는게 단순히 python setup.py a; python setup.py b; python setup.py c 이렇게 쓰는 것과 같은 게 아니구요. distutils 디자인 디테일을 좀 알명 설명하기 쉬운데, 내부적으로 Distribution 이라는 컨셉이 있고 그걸 명령어 순서대로 파이프라이닝한다고 생각하시면 됩니다. 앞쪽 명령어들에서 provide하는 메타데이터를 뒤쪽에서 consume해요.

 라고 합니다. ㅎㅎㅎ, 제가 업로드가 끝나고 나서 정리하면서 실수를 했습니다. 

 

이제 pip 명령으로 다운로드 받아지는지 확인하면 됩니다.

<br /><br />pip install guoid<br /><br />

뭐, 어줍잖은 기능이긴 하지만, 맨날 pip를 이용해서 남의 것만 설치하다가 자신의 package를 다운로드/설치가 된다는 건 참 재미있는 일입니다. 따로, 인증 과정이 없으니, 아무나 올릴 수 있다는 것도 장점입니다. 그럼 모두들 고운 하루되세요.