파이썬 패키지 오프라인 설치

파이썬으로 cx_Oracle이나 seaborn 패키지 기능을 사용할 일이 있었는데, 내부망에는 인터넷은 따로 안되고, pypi 미러 서버도 없어서 패키지를 usb 등을 통해서 설치해야 했다.

인터넷이 되면 굳이 이럴 필요 없이 아래 명령어 한 줄이면 되는데,
python -m pip install <패키지명> --upgrade
오프라인으로 하려니 dependencies (먼저 설치되어야하는 패키지) 문제로 너무 오래 걸렸다.
나중에 또 헷갈릴까봐 기록..!

1단계 -> 3단계로 dependencies 오류(대략 A패키지가 없음) 발생시 그 다음 단계 방법을 적용하면 된다.

cx_Oracle은 다행히 dependencies 없이 1단계에서 끝났고, seaborn은 dependencis 오류가 발생해서 3단계까지 가서 해결했다.

다운 받을 패키지 확인

오프라인PC 환경 체크

1. OS 종류: windows / linux
2. OS 시스템 : 32비트 운영체제 / 64비트 운영체제
3. 파이썬 버전 확인 명령어
 python --version

4. OS, 비트, 파이썬 버전 확인하여 알맞은 버전 찾기:
패키지 버전에 따라 파이썬 2.7까지만 지원한다거나 3 이후부터 지원하는 경우가 있기 때문에 무조건 최신으로 설치하면 안되고 내 파이썬 버전(3.9)을 지원하는지 봐야한다.
이건 패키지 공식 홈페이지나 구글링 통해 알아보면 된다.

1. 패키지 단독 설치

온라인PC

pypi.org 접속 후 패키지+버전 검색

source distribution 을 다운받으면 내가 빌드(=내 PC 환경에 맞는 기계어로 번역)를 해줘야해서, 위에서 확인한 <오프라인PC> 환경에 맞는 built distribution 을 다운로드 받으면 된다.



오프라인PC

ㅇ 패키지(.whl)설치 명령어 : 

pip3 install -t C:/<타겟경로> C:/<파일경로>/cx_Oracle-8.3.0-cp39-cp39-win_amd64.whl
  * -t 타겟 경로 지정 옵션은 생략 가능

ㅇ 설치시 pypi 접속 안 된 다는 등 온라인 기능을 요구하는 경우 옵션 추가

python -m pip install --no-index --find-links "./" <패키지파일명>

2. 패키지 폴더 만들기 (일반적인 방법, dependencies 오류 90% 이상 해결법)

온라인PC

1. <인터넷PC> 에 파이썬 설치
 - <오프라인PC> 와 파이썬 버전이 동일하면 좋지만 달라도 옵션으로 해결할 수 있음

2. 패키지 관련 파일 다운로드
 - cmd 실행
 - mkdir <패키지폴더명>
 - python -m pip download --python-version 3.7.3 --only-binary :all: -d <패키지폴더경로> <패키지명>

  cf ) <오프라인PC> 에 설치된 파이썬 버전 확인해서 버전 입력할 것

  예시 ) python -m pip download --python-version 3.7.3 --only-binary :all: -d . seaborn

  cf )
<온라인PC>에서 전혀 다른 플랫폼의 패키지를 다운로드할 수 있는 옵션(--platform--python-version--implementation--abi)을 사용하면 dependency 문제에 대해 처리하는 옵션을 반드시 명시해야 한다 (--only-binary=:all: , --no-deps 둘 중 하나) 
참고 : https://pip.pypa.io/en/stable/cli/pip_download/

  cf ) 모든 dependencies 를 내려 받는건 아니고 바이너리를 지원(--only-binary :all:) 하는 패키지들만 받기 때문에
  실제 실행후 오류 발생시 부족한 패키지는 추가로 다운로드 받을것 => 3단계

3. requirements.txt 파일 생성
 - 관련 패키지설치를 한 번에 하기 위해 만드는 파일
 - 하나씩 해줘도 상관없음
 - 아래처럼 패키지명 == , < , > , >= 버전 목록 형태

pandas==1.1.5
matplotlib==3.5.3
numpy==1.21.6
typing_extensions==4.4.0
seaborn==0.12.1

4. 패키지폴더 및 requirements.txt <오프라인PC> 내부로 이동

=====================================================

오프라인PC


1. cmd 창 관리자 권한으로 실행

2. 패키지 폴더로 이동 (다운로드 폴더에 있다고 가정)

예시)
cd C:\Users\<계정명: jung>\Downloads\<패키지폴더명: seaborn_python_package>

2. 설치 명령어 입력

python -m pip install --no-index --find-links "./" -r requirements.txt


3. 설치 실패시 보통 dependencies 때문으로 부족한 패키지 추가로 가져와서

python -m pip install --no-index --find-links "./" <패키지파일명>
====================================================

3. 바이너리 미지원 패키지 추가 다운

2단계에서 모든 dependencies 를 내려 받는건 아니고 바이너리를 지원(--only-binary :all:) 하는 패키지들만 받기 때문에 실제 실행후 오류 발생시 부족한 패키지는 추가로 다운로드 받아야 한다.

2단계에서 오류가 뜨는 패키지에 대해 2단계를 반복한다.

댓글