Pypi(Python Package Index) Python을 위한 공식적인 Third-party 소프트웨어 저장소이다. 

주로 Python 라이브러리를 설치하기 위해 pip 명령어를 사용하는데, 이는 Pypi 저장소(https://pypi.org)를 통해 해당 Package를 설치한다.

 

이번 포스팅은 이런 Pypi 서버를 Private 형태의 로컬 저장소용 설치 및 개발한 Python 코드를 Packaging하여 로컬 저장소에 업로드 및 다운로드 하는 방법을 설명한다.

 

 

1. Private Pypi 설치

  - pypiserverhttps://pypi.org/project/pypiserver

$ sudo apt-get install python3-pip

$ sudo pip3 install pypiserver

 

  - Package를 저장할 디렉토리 생성

$mkdir {Package Repository Directory}

  ex) $mkdir ~/packages

 

2. Private Pypi 서버 계정 관리를 위한 passlib 설치

$ sudo apt-get install apache2-utils

$ sudo pip3 install passlib

$ htpasswd -sc htpasswd.txt {ID}

  ex) htpasswd -sc htpasswd.txt programist

 
 
 

3. Private Pypi 서버 구동

$ pypi-server -p {PortNumber} -P htpasswd.txt {Package Repository Directory}

  ex) pypi-server -p 8080 -P htpasswd.txt ~/packages &

 

  - 브라우저를 통해 접속하면 다음과 같이 Pypi 서버가 정상적으로 동작하는 것을 확인할 수 있다.

 

 

 

 

4. Client 설정

  - 다음과 같은 형식으로 

$ vi ~/.pypirc

 

[distutils]

index-servers =

  local

 

[local]

repository: {Priavte Server URL}

username: {ID}

password: {Password]

 

  - 현재 구축 환경에서는 다음과 같다.

 

 

 

5. Python 코드 Packaging을 위한 setup.py 작성

  - Packaging을 하기 위해서는 setup.py 작성해야 한다.

  - 자세한 setup.py에 대한 자세한 작성 방법은 아래 링크를 참고하면 된다.

    (https://docs.python.org/3.5/distutils/setupscript.html)

 

 

 

6. Python 코드 Package 업로드

$ python3 setup.py bdist_wheel upload -r local

 

 

 

  - 업로드 확인은 다음과 같이 Private Pypi 서버에서 확인이 가능하다.

 

 

 

7. Private Pypi 서버에서 Package 다운로드 및 설치

$ pip3 install --extra-index-url {Private Server URL} --trusted-host {Private Server IP} {Python Package Name}

  ex) pip3 install --extra-index-url http://192.168.0.101:8080 --trusted-host 192.168.0.101 pypitest

 

 

 

  - 다음과 같이 테스트용 Package인 Pypitest Package가 설치되는 것을 확인할 수 있다.

+ Recent posts