public으로 올리는 법은 Link 참조.
PyPI server 설치
pip install pypiserver
private PyPI server 계정 관리
$ pip install passlib
$ htpasswd -sc htpasswd.txt {ID}
ex) htpasswd -sc htpasswd.txt jinsung
- htpasswd 명령어 실행 이후 유저에 대한 비밀번호를 설정해준다.
서버 구동
pypi-server -p {PORT} -P htpasswd.txt {PACKAGE_DIRECTORY}
ex) pypi-server -p 5000 -P htpasswd.txt ./package_test
MacOS Monterey에서 port 5000 사용시 already use 오류가 발생할 수 있는데 해결 방법은 Link 참조.
- localhost:5000 으로 접속하면 pypi-server가 동작하는 것을 확인할 수 있다.
- 빨간 박스를 보면 아무런 패키지도 배포되지 않았음을 확인할 수 있다.
Client 설정
다음과 같이 파일 작성 후, OS에 맞게 저장한다.
[distutils]
index-servers =
local
[local]
repository: {PRIVATE_SERVER_URL}
username: {ID}
password: {PASSWORD}
현재 사용중인 설정은 다음과 같다.
[distutils]
index-servers =
local
[local]
repository: http://192.168.1.13:5000
username: jinsung
password: 1234
MacOS
vim ~/.pypirc
Windows
C:\Users\{USER_NAME}\.pypirc
setup.cfg 설정
C extension을 포함하지 않고, python2, 3 버전에서 모두 작동해야 하는 경우 setup.cfg 파일을 다음과 같이 생성한다.
[bdist_wheel]
universal = 1
Python Package 업로드
- 업로드를 위해 필요한 setup.py는 Link에서 작성한 setup.py의 형태를 참고한다.
- local은 Client 설정에서 정해준 tag이다.
python setup.py bdist_wheel upload -r local
다른 서버에서 패키지 다운로드
다운로드 받기 위해 pip, easy_install이 설치되어 있어야 한다.
pip
pip download --trusted-host {PRIVATE_SERVER_IP} --index-url {PRIVATE_SERVER_URL}/simple {PACKAGE_NAME}
ex) pip download --trusted-host 192.168.1.13 --index-url http://192.168.1.13:5000/simple cube_solver
easy_install
easy_install -i {PRIVATE_SERVER_URL}/simple {PACKAGE_NAME}
ex) easy_install -i http://192.168.1.13:5000/simple cube_solver
또는 서버에 접속하여 파일을 다운로드 받을 수 있다. (주소는 localhost 대신 private server url 입력)
세 가지 방법중 하나로 다운로드 받은 후 다음 명령을 수행하면 패키지를 현재 환경에 설치할 수 있다.
pip install {DOWNLOADED_WHEEL_FILE}
ex) pip install cube_solver-0.0.1-py3-none-any.whl
'Python' 카테고리의 다른 글
[Python] type()과 isinstance()의 차이 (0) | 2023.08.23 |
---|---|
[Python] requirements.txt에 링크 넣기 (0) | 2023.06.07 |
[Python] PyPI 패키지 만들기 및 배포 (0) | 2022.04.27 |
[Python] 다른 경로에 있는 폴더/파일 import 하기(__init__, __all__) (0) | 2022.02.11 |
[Python] postgreSQL 연동하기 (0) | 2022.01.23 |