soma0sd

코딩 & 과학 & 교육

Python 가상환경(venv)에 apt-get으로 설치한 패키지 집어넣기

반응형

NVIDIA 젯슨이나 라즈베리 파이 등 조금 특별한 환경에서 사용하는 파이썬 패키지는 파이썬 패키지 인덱스(PyPI)에서 제공하지 않는 경우가 많습니다. 즉 pip로 설치할 수 없거나 설치했더라도 오류가 발생합니다.

여기서는 무분투를 포함한 데비안 계열의 패키지 관리자인 APT를 사용해서 apt-get install python3-numpy와 같은 방식으로 설치한 패키지를 파이썬 가상환경에 적용하는 방법을 소개하고 간단한 bash 스크립트를 안내합니다.

apt-get으로부터 가상환경의 패키지지로 옮기는 절차

  1. apt-get downlad를 사용해서 해당하는 파이썬 패키지가 담긴 리눅스 패키지를 다운로드
  2. dpkg -x를사용해서 패키지 압축 해제
  3. mv를 사용해 데비안 패키지 내부의 dist-packages/ 내용물을 가상환경의 site-packages/ 디렉토리로 이동
  4. rm을 사용하여 내려받은 데비안 패키지(*.deb)와 압축을 해제한 폴더 삭제

Bash 함수

VENV_SITE_PACKAGES=./.pyenv/lib/python3.6/site-packages/
VENV_BIN=./.pyenv/bin/

function python_apt {
    sudo apt-get download $1
    dpkg -x ./$1*.deb ./$1
    mv ./$1/usr/lib/python3/dist-packages/* ${VENV_SITE_PACKAGES}
    mv ./$1/usr/bin/* ${VENV_BIN}
    rm -f ./$1*.deb
    rm -rf ./$1
}

위의 절차를 스크립트로 만든 bash 스크립트입니다. VENV_SITE_PACKAGESVENV_BIN.pyenv경로를 사용자에 맞게 바꿔서 apt-to-venv.sh와 같은 *.sh 파일로 작성해 저장한 뒤 bash ./apt-to-venv.sh로 실행하면 됩니다. 설치할 패키지까지 스크립트에 포함하고 싶다면 아래의 사용법을 참고하여 스크립트에 추가하면 됩니다.

사용법:

# 스크립트 실행
bash ./apt-to-venv.sh

# 설치하려는 패키지가 apt에 있는지 확인
apt search python3-requests

# 패키지 설치 (ex)python3-requests
python_apt "python3-requests"

# 패키지 종속성 설치
python_apt "python3-urllib3"
python_apt "python3-six"
python_apt "python3-chardet"
python_apt "python3-certifi"
python_apt "python3-idna"

패키지 종속성을 파악하려면:

  • 해당 패키지의 홈페이지를 방문해서 파악
  • 호스트에서 해당 apt 패키지를 설치/재설치 해서 종속성 목록을 확인
  • 해당 패키지를 사용하는 파이썬 스크립트를 실행해보고 찾을 수 없다며 오류를 뱉는 패키지 기록

하는 방법이 있습니다

반응형
태그:

댓글

End of content

No more pages to load