2022년 11월 23일 수요일

Python venv(virtual Environment) 오프라인 설치


Venv

virtual 환경은 보통 파이썬 패키지등을 설치하다 보면, 가끔가다가 환경이 꼬이는 경우들이 가끔가다 발생합니다.

특히 pip같은 걸로 관리하는 경우는 그래도 좀 수월하지만, 이것 저것 패키지 dependency가 꼬이는 경우들이 종종 있습니다. 이런 것들을 방지 하기 위해서, venv를 사용합니다,

이전 python2에는 virtualenv라든지 third-party 지원을 사용했다면, 현재는 python 3.3 부터 venv가 기본 패키지 안으로 들어옴에 따라 그냥 venv를 사용하면 됩니다.

venv 실행

실행법은 아래와 같이 실행하면 됩니다.

>> python -m venv [virtualenv_name]

으로 실행하면 됩니다.

여기서는 env1 로 만들어 보겠습니다. 리눅스 기준으로는 아래와 같이 실행합니다.

>> python -m venv env1
>> cd env 
>> source ./bin/activate
(env1) >> 

위와 같이 가상환경이 준비된 것을 확인할 수 있습니다. 빠져나올때는 deactive 를 실행시키면 빠져나올 수 있습니다.

패키지 확인

다음과 같이 pip list 또는 pip freeze 를 치면 현재 깔린 패키지들을 확인할 수 있습니다 pip list의 경우는 pip나 setuptools같은 기본적으로 깔려 있는 패키지까지 출력을 해주고,

>> pip list  
Package    Version
---------- -------
pip        22.0.2
setuptools 59.6.0

패키지 설치

다음 명령어로는 깔려있는 패키지들을 requirement.txt 파일에 저장을 합니다.

(env1)>> pip freeze > requirement.txt

-r 또는 --requirement 옵션을 사용하면, requirement.txt 파일에 있는 패키지들을 설치할 수 있습니다.

(env1)>> pip install -r requirement.txt 

또 예제로, 아래와 같이 django 패키지를 설치할 수 있습니다.

(env1)>> pip install django 
(env1)>> pip freeze
asgiref==3.5.2
Django==4.1.3
sqlparse==0.4.3

패키지 삭제

pip uninstall 명령어를 이용하면 관련 패키지를 삭제할 수 있습니다. 즉, 다음과 같이 하면 관련 패키지들을 삭제할 수 있습니다.

(env1)>> pip freeze > requirement.txt
(env1)>> pip uninstall -r requirement.txt

offline 설치

그리고 사내망 같은 부분은 분리되어 있는 경우들이 있기때문에 offline 설치 방법이 필요합니다.

패키지 다운로드

먼저 외부망에서 pip download 명령어를 이용하면 패키지를 다운로드 받을 수 있습니다. 아래와 같이 django 패키지를 다운로드 받아 봅니다 whl 파일들이 다운된 것을 확인할 수 있습니다.

(env1)>> pip download django 
(env1)>> ls
Django-4.1.3-py3-none-any.whl
asgiref-3.5.2-py3-none-any.whl
sqlparse-0.4.3-py3-none-any.whl

패키지 로컬 설치

이 whl 파일들을 이용해서 다음 명령어를 사용하면 패키지들이 설치가 됩니다 -f 옵션은 whl 파일이 있는 위치를 나타냅니다.

(env1)>> pip install --no-index -f . django

마무리하며

이글을 처음 작성할 때는 python2 시절이었습니다. 그 당시에는 virtualenv, venv 와 같이 비슷한 이름의 패키지가 있어서, 헷갈리는 부분도 많았는데, 현재는 대부분 python3으로 대세가 넘어왔기 때문에 venv기준으로 내용을 정리 해 보았습니다.

댓글 없음:

댓글 쓰기