인터넷 환경에서는 바로 pip install 명령어를 통해 쉽게 설치가 가능하지만,
현재 다니는 회사에서 폐쇄망을 통해 개발하고 있기 때문에 특정 기간 방화벽을 오픈 요청을 하지 않는 이상 오프라인 환경에서 필요한 환경을 구축해야 한다.
온라인 환경 설치
먼저, 인터넷이 되는 온라인 환경에서 설치하고자 하는 파이썬 패키지를 다운로드한다. (pycrypto 패키지를 예시로 들었다. )
PYPI에서 직접 파일을 다운받거나, pip download 명령어를 통해 필요한 파일을 다운로드한다.
만약 여러 패키지를 한번에 설치해야 하는 경우(초기 프로젝트 세팅해야 하는 경우) requirements.txt로 다운로드할 파일 목록을 추출 후 한 번에 다운로드할 수 있다.
다운로드할 파일 목록을 직접 작성할 수도 있지만 어떻게 목록을 작성해야할지 모른다면, 아래와 같이 pip install을 통해 실제로 설치해보고 freeze 옵션을 통해 requirements.txt 내에 필요한 패키지를 목록으로 추출하면 된다.
pip install {패키지}
pip freeze > requirements.txt
pip download 명령어로 패키지를 다운로드 한다.
# 1. 여러 패키지 한 번에 다운로드
pip download -r requirements.txt
# 2. 하나의 패키지 다운로드
pip download -d . pycrypto
-d 옵션으로 다운로드 받을 폴더를 지정하고 원하는 패키지를 입력하면 의존성 있는 모든 패키지가 다운 받아진다.
패키지들이 zip, tar.gz, wheel 파일 등 각각 지원하는 형식으로 다운로드 된다.
오프라인 환경 설치
다운받아 생성된 파일들을 오프라인 환경으로 이동시킨다.
오프라인에서 기존에 사용하고 있는 가상 환경이 있다면 설치할 가상 환경을 활성화한다. (없다면 가상 환경을 새로 만들어 사용하자.)
# 가상환경 생성
python -m venv venv
# 가상환경 활성화
source /가상환경경로/venv/bin/activate
다운받은 tar 파일 압축을 해제한다.
tar xvzf pycrypto-2.6.1.tar.gz
압축 해제한 패키지 파일을 이용하여 아래와 같이 설치해 주면 된다.
# 1. requirements.txt에 작성한 패키지들 한 번에 설치
pip install --no-index --find-links="./" -r requirements.txt
# 2. 특정 패키지 설치
pip install --no-index --find-links=./ pycrypto
--no-index 옵션은 패키지 인덱스를 무시하고 오직 -f, --find-links 옵션으로 지정한 URL로 접근하여 다운로드 및 설치하려는 옵션이다. pip는 현재 디렉터리에서 설치하려는 패키지에 필요한 의존성 패키지들을 찾아 설치한다.
pip install을 통해 한번 설치한 이후 동일한 패키지를 설치할 때 기존에 설치된 패키지에 대한 cache 파일이 있어 다운로드 없이 기존에 다운받은 패키지를 가져와 설치하게 된다. 패키지들 버전에 따라 의존성이 꼬이는 현상이 발생할 수 있으므로, --no-cache-dir 옵션을 추가하여 캐시를 사용하지 않도록 설정하는 것을 권장한다.
아래 명령어로 설치가 잘 되었는지 패키지 목록을 확인한다.
pip list
'Devlog > Python' 카테고리의 다른 글
Flask와 Django 비교 (1) | 2022.08.21 |
---|---|
[Python] pycrypto RSA 오류 (0) | 2022.04.22 |
[Python] ModuleNotFoundError: No module named '_ctypes' 오류 (0) | 2022.04.21 |