가상환경
1 개요
손쉬운 개발환경 유지와 공유를 위하여.
- 파이썬 프로젝트를 진행할 때 독립적인 환경을 만들어주기 위한 것. 각각의 프로젝트를 개발, 관리할 때 각각의 프로젝트에서 사용된 파이썬버전과 라이브러리의 버전이 다를 수도 있다. 그때 다른 환경에서도 비슷환경을 만들어주기 위한 전략이다.
- 여러 개의 모듈을 설치했을 때 명령어의 충돌을 방지할 수 있다.
- 개발 컴퓨터들을 동일한 환경 아래 두게 한다.
- 독립된 가상환경을 만들어 버전이 달라 작동하지 않는 문제에 대해선 걱정하지 않아도 된다.
- 파이참 같은 에디터에선 설정으로 가상환경을 사용하므로 필요 없는 내용이다.
2 파이썬으로 만들기
파이썬 명령으로 가상환경 만들기.
단계 | 설명 | 방법 | ||||||
---|---|---|---|---|---|---|---|---|
가상환경 만들기 | 해당 프로젝트의 root디렉터리에서 하는 게 일반적이나, 필요에 따라 가상환경을 만들 디렉토리에서 명령을 입력한다.
=> 해당 디렉터리 안에 가상환경 이름의 디렉토리가 생긴다. |
일반적으로 가상환경의 이름은 venv로 한다. | ||||||
가상환경 실행하기 | 가상환경 디렉터리 안에 Script 디렉터리가 있고, 이 안에서 activate를 입력한다.
이 명령을 실행하면 프롬프트 왼쪽에 (가상환경명)이 생긴다. |
source 가상환경경로/bin/activate | ||||||
가상환경 빠져나오기 | 가상환경에서 나가려면 아무데서나 deactivate를 실행하면 된다. | deactivate | ||||||
3 가상환경 옮기기
가상환경 백업. 윈도우를 사용하다 리눅스로, 맥으로 이동할 때 가상환경들을 간단히 옮길 수가 없다. 결국 새로 만들어준 후 라이브러리를 설치해주어야 하는데, 일일이 라이브러리를 설치해주기엔 시간이 너무 오래걸린다.
pip freeze > requirements.txt 명령을 기입하면 가상환경에 설치된 것이 텍스트파일에 기록된다.
이후 서버에서 pip install -r requirements.txt 를 실행하면 그 안에 있는 걸 따라 그대로 설치해준다.
의도 | 설명 | 방법 |
---|---|---|
가상환경 포장하기 | 설치한 패키지들에 대한 정보를 담는다. | pip freeze > requirements.txt |
가상환경 포장풀기 | 패키지들에 대한 정보를 토대로 그대로 설치한다. | pip install -r requirements.txt |
모든 패키지 삭제 | 설치된 패키지를 txt파일에 담은 후 삭제한다.
패키지마다 삭제할 거냐고 묻는데, -y옵션을 줘서 진행한다. |
pip uninstall -r requirements.txt -y |
4 팁
4.1 가상환경 쉽게 실행하기
일반적인 IDE에선 시작할 때 가상환경으로 시작해주지만, 그렇지 않은 경우엔 일일이 실행해주어야 한다.
4.1.1 cmd파일 만들기
가상환경에 진입하려면 매번 해당 경로로 들어가 activate 명령을 써야 한다. 이게 한 두번이면 괜찮은데.. 매번 쓸 때마다 들어가긴 귀찮은 일이다.
이을 위해 cmd 파일을 만든다.(다음과 같이, 메모장이나 그런걸로..)
@echo off
@c:/경로/가상환경경로/scripts/activate
@cd c:/경로/작업후 이동할경로
4.1.2 cmd파일 사용
파일명.cmd 형태일 때, 파일을 직접 실행하면 되는데... 이것조차 귀찮으면..
명령프롬프트에서 setx PATH "%PATH%;c:\cmd가있는경로"
를 입력해주면 아무 곳에서나 파일명을 치면 가상환경으로 진입한다.
5 문제해결
5.1 CategoryInfo : 보안 오류: (:) [], PSSecurityException FullyQualifiedErrorId : UnauthorizedAccess
윈도우에서 가상환경을 실행할 때 이런 오류가 뜨곤 하는데, 보안오류가 뜰 땐 파워쉘을 관리자모드로 실행한 후 Set-ExecutionPolicy Unrestricted
를 입력하고 y를 넣어주면 이후에 가상환경을 열 수 있게 된다.