아티클 관련 제품: SparklingSoDA3.0
들어가며
- 스파클링소다에서 사용 중인데 NEXUS Repository는 내부망으로 사설 Python 패키지 저장소 공간을 제공합니다.
- 해당 내부 사설 Repository에 필요한 Python 패키지들을 다량으로 업로드 하는 간편한 방법을 알아봅니다.
내용
NEXUS Repositroy에 업로드하는 간편한 방법 중 Twine이라는 패키지를 이용하는 것 입니다.
자신의 python 설치 환경에서 twine 패키지를 다운 받습니다.
pip install twine
그 후 자신의 Repository 이름과 계정 정보, Hosting URL 을 확인합니다.
확인 후 다운받은 twine의 저장소 설정 파일 생성을 위해 아래와 같은 .pypirc 저장소 파일을 작성 후 생성합니다.
vi /root/.pypirc [distutils] index-servers = pypi-hosted [pypi-hosted] repository: http://hub.sparklingsoda.io/repository/pypi-hosted/ username: admin password: agilesoda01
( 예시입니다. )
그 후 업로드를 원하는 패키지들을 원하는 디렉토리 경로에 download 받습니다.
pwd /root/packages_download ls -al total 27112 root root 4096 Dec 12 09:30 . root root 4096 Dec 12 09:29 .. root root 15702369 Dec 12 09:27 numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl root root 11285953 Dec 12 09:30 pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl root root 247702 Dec 12 09:30 python_dateutil-2.8.2-py2.py3-none-any.whl root root 498053 Dec 12 09:30 pytz-2022.6-py2.py3-none-any.whl root root 11053 Dec 12 09:30 six-1.16.0-py2.py3-none-any.whl
아래의 커맨드를 사용하여 특정 디렉토리의 패키지들을 업로드 합니다.
twine upload --config-file /root/.pypirc -r pypi-hosted /root/packages_download/* Uploading distributions to http://hub.sparklingsoda.io:80/repository/pypi-hosted/ Uploading * 100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 38.1/38.1 MB • 00:00 • 141.4 MB/s
만약 이미 업로드 된 파일의 경우 간혹 아래와 같이 400 Bad request 에러가 발생할 수 있습니다.
twine upload --config-file /root/.pypirc -r pypi-hosted /root/packages_download/* Uploading distributions to http://hub.sparklingsoda.io:80/repository/pypi-hosted/ Uploading * 100% ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 38.1/38.1 MB • 00:00 • 141.4 MB/s WARNING Error during upload. Retry with the --verbose option for more details. ERROR HTTPError: 400 Bad Request from http://hub.sparklingsoda.io:80/repository/pypi-hosted/ Repository does not allow updating assets: pypi-hosted
이러한 경우를 대비해 간단한 스크립트를 제작했습니다.
아래의 스크립트를 이용해서 개별적으로 반복문을 돌릴 수 있습니다.
사용법은 다음과 같습니다.
bash Nexus_Python_Upload.sh <패키지 디렉토리 경로>
▶︎ 패키지들이 모여있는 디렉토리의 경로를 입력한 뒤 bash 스크립트를 실행하면 자동으로 해당 디렉토리 안에 들어있는 모든 패키지들이 순서대로 업로드 진행 됩니다.
✓ 스크립트는 하단에 첨부하였습니다.
마무리
- 위와 같이 twine 패키지를 이용하여 NEXUS Repository에 Python 패키지들을 쉽게 다운로드 후 업로드 가능합니다.
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.