[Python] 파이썬에서 가상환경 사용하기
- 가상환경을 사용하는 이유
프로젝트마다 독립된 파이썬 환경을 생성할 수 있다. 이는 프로젝트 간 라이브러리 충돌을 방지할 수 있고 하나의 프로젝트에서 라이브러리를 업그레이드하거나 변경해도 다른 프로젝트에 영향을 끼치 않는다. 또한 다른 PC에서 공유받은 파이썬 프로젝트를 가상환경과 같이 받으면 공유한 PC의 환경과 동일하게 맞출 수 있다. 가상환경을 사용하지 않는 경우에는 시스템 환경(전역환경) 즉 모든 파이썬의 실행이 시스템 환경의 패키지를 바라보게 된다. 이 때문에 몇 개의 프로젝트만 만들다 보면 라이브러리 간 충돌을 야기할 수 있다. 지금 당장은 번거로울지라도 가상환경을 사용하는 습관을 들이자.
- 가상환경 생성
크롤러(crawler) 라는 프로젝트를 만든다고 하면 해당 경로로 이동한 후 가상환경을 만들면 된다. 이 가상환경은 크롤러 프로젝트의 의존성을 관리하고 독립적인 환경을 제공한다. 가상환경을 만들면 프로젝트 폴더 안에 venv라는 가상환경 폴더가 생성된다. 명령 프롬프트(CMD)로 가상환경을 만들어보자.
# 프로젝트 생성
> mkdir crawler
# 디렉토리 이동
> cd crawler
# python -m venv 가상환경 이름
# 가상환경 생성
> python -m venv venv
- 가상환경 활성화
생성된 가상환경 폴더의 ..\venv\Scripts\activate.bat을 실행하면 가상환경이 활성화된다. 가상환경이 활성화되면 왼쪽에 아래 이미지와 같이 (가상환경 이름)이 붙는다.
# 가상환경 Scripts 폴더 이동
> cd venv\Scripts
# 가상환경 활성화
> activate.bat
가상환경이 활성화된 상태에서 where python 명령어를 실행하면 파이썬 인터프리터 위치가 나온다. 하나는 가상환경 내 파이썬 인터프리터와 다른 하나는 시스템에 설치된 파이썬의 인터프리터이다.
> where python
- 가상환경 비활성화
..\venv\Scripts\deactivate.bat을 실행하면 가상환경이 활성화된다.
# 가상환경 Scripts 폴더 이동
> cd venv\Scripts
# 가상환경 비활성화
> deactivate.bat
- 가상환경 내에서 패키지 설치
가상환경 내에서 패키지를 설치하려면, 가상환경을 활성화한 상태에서 pip install 패키지명으로 설치를 진행하면 된다. 필자는 웹 크롤링을 위해 샘플로 selenium 패키지를 설치해본다. 아래와 같이 selenium 패키지에 의존된 라이브러리들이 설치되었다.
# selenium 패키지 설치
> pip install selenium
# 설치된 패키지 확인
> pip freeze
# [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
# 패키지 설치 중 위와 같은 오류 시 SSL 검증 생략
> pip --trusted-host pypi.org --trusted-host files.pythonhosted.org install selenium
가상환경을 비활성화 후 설치된 패키지를 확인해보면 아무것도 나오지 않는다. 왜냐하면 파이썬을 설치한 후 시스템 환경(가상환경이 아닌 전역환경) 에서는 아무 패키지도 설치하지 않았으므로 아무것도 나오지 않는것이다. 이렇게 가상환경을 사용함으로써의 장점을 확인할 수 있다. (비활성화된 가상환경 상태에서 ../venv/Script의 pip freeze 명령어를 실행하면 가상환경 폴더 내 pip.exe파일을 실행하여 조회하므로 가상환경의 패키지를 목록을 출력한다.)
- 가상환경 관리 (내보내기/가져오기)
pip freeze 명령어로 가상환경 내 패키지 목록을 조회 후 내보내기 하여 다른 PC 환경에서 그대로 사용할 수 있게끔 설치하여 사용할 수 있다. 테스트를 위해 새로운 프로젝트를 만든 후 그 가상환경에 내보내기한 패키지 목록을 그대로 동일하게 설치해보자.
# 가상환경 패키지 목록 내보내기
> pip freeze > requirements.txt
새로운 프로젝트를 생성하여 가상환경을 만들고 이 가상환경에서는 아무런 패키지도 없음을 확인한다.
# 새로운 프로젝트 생성
> mkdir new_crawler
# 경로 이동
> cd new_crawler
# 가상환경 생성
> python -m venv venv
# 새로운 프로젝트의 가상환경 활성화
python -m venv venv
> venv\Scripts\activate.bat
# 설치된 패키지 확인
> pip freeze
crawler 프로젝트 가상환경에서 내보내기한 패키지 목록을 new_crawler 프로젝트 가상환경에 동일하게 설치해보자.
requirements.txt 파일을 new_crawler 프로젝트로 이동 후 아래 명령어를 실행하자. 아래 이미지와 같이 동일한 가상환경이 만들어졌음을 확인할 수 있다.
# 패키지 목록 가져와 설치하기
> pip install -r requirements.txt
'Programming > Python' 카테고리의 다른 글
[Python] 파이썬 Selenium으로 웹 크롤링 (Web crawl with Python Selenium) (0) | 2023.07.14 |
---|---|
VS Code(Visual Studio Code)로 Python 개발환경 설정 (0) | 2023.06.20 |
댓글