파이썬 패키지 업로드하기

작성자 김아름 수정일 2022-10-17 15:25

#SparklingSoDA4.0, #스파클링소다4.0, #python, #파이썬, #패키지

아티클 관련 제품: SparklingSoDA4.0

이 글을 읽으면

  • cli를 통해 python 패키지 업로드를 할 수 있습니다.



사전 작업 및 준비

  • 업로드 하고자 하는 파이썬 패키지를 파일을 준비합니다.

  • 단, 종속성이 있는 모든 파일이 준비되어 있어야 합니다.



파이썬 패키지 업로드 하기

스파클링소다 설치 파일 중 package_loader 디렉터리가 존재합니다.

해당 디렉터리로 이동하면, job_pypi_upload.yaml 파일과 upload 디렉터리가 존재합니다.

cd <sparklingsoda directory>/package_loader/
ls -al
total 4
drwxr-xr-x.  3 root root  48 Aug 29 17:53 .
drwxrwxrwx. 13 root root 206 Sep 19 14:02 ..
-rw-r--r--   1 root root 801 Aug 29 17:53 job_pypi_upload.yaml
drwxr-xr-x.  2 root root 173 Aug 30 09:49 upload


활용하는 방법은,

upload 디렉터리에 업로드하고자 하는 파이썬 패키지 파일을 넣어준 후, job_pypi_upload.yaml 파일을 실행해주면 됩니다.


예시는 아래와 같습니다.

1. package_loade/upload 하위에 python package를 넣어줍니다.

ll upload/
total 11280
-rw-r--r-- 1 root root 11285953 Aug 29 17:56 pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl


2. job_pypi_upload.yaml 파일을 수정합니다.


spec.template.spec.volumes/hostPath 를 수정합니다.

해당 값은 python package를 넣어 둔 upload 디렉터리를 전체 경로로 작성합니다.


spec.template.spec.nodeSelector 를 수정합니다.

해당 값은 master node의 hostname으로 작성합니다.

아래 명령어를 활용하면, master노드에 적용된 hostname을 알 수 있습니다.

kubectl get node --show-labels | grep kubernetes.io/hostname
master   Ready    master   92d   v1.18.19   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master,kubernetes.io/os=linux,master=true,node-role.kubernetes.io/master=,sodaflow/nginx-proxy=true,sodaflow/sodaflow-master-area=true,sodaflow/sodaflow-worker-area=true
worker   Ready    <none>   85d   v1.18.19   beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=worker,kubernetes.io/os=linux,sodaflow/gpu-enabled=true,sodaflow/nginx-proxy=true,sodaflow/sodaflow-master-area=true,sodaflow/sodaflow-worker-area=true,testKey=testValue,worker=true


3. package_loader 디렉터리에 있는 job_pypi_upload.yaml을 실행합니다.

kubectl apply -f job_pypi_upload.yaml 
job.batch/nexus-pypi-loader created


4. 정상적으로 push 가 되었는지 확인합니다.

kubectl get po | grep nexus-pypi-loader
nexus-pypi-loader-f787x                                   0/1     Completed   0          2m27s

pod의 이름을 복사합니다.


kubectl logs -f <pod name>

kubectl logs -f nexus-pypi-loader-f787x
Start package uploading to devainexus 
Uploading distributions to http://devainexus/repository/pypi-hosted/
Uploading pandas-1.3.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
100%|██████████| 10.8M/10.8M [00:00<00:00, 25.4MB/s]
All Done. upload files 1


만약 추후에 다시 python package를 업로드하게 된다면,

실행했던 job을 내린 후 다시 실행해야 합니다.

kubectl delete -f job_pypi_upload.yaml 
job.batch "nexus-pypi-loader" deleted

kubectl apply -f job_pypi_upload.yaml 
job.batch/nexus-pypi-loader created


마치며

  • cli로 python package를 업로드하는 방법에 대해 알아보았습니다.
  • 이렇게 nexus에 python package를 업로드 했다면, 노트북 내에서 해당 패키지를 불러와 import할 수 있습니다.


아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300