Python 공부정리 - 가상환경
1. 가상환경
파이썬에서는 pip라는 패키지 관리자를 통해서 필요한 패키지(라이브러리)를 설치하고 관리한다.
pip란 파이썬 패키지 관리자로 Node.js의 npm과 유사하고 C#의 NuGet패키지와 같은 역할을 한다.
pip 명령어로 파일을 설치, 관리한다.
pip install [옵션] <요구사항파일> [패키지 인덱스 옵션]
pip install [옵션] -r <요구사항파일> [패키지 인덱스 옵션]
pip install [옵션] [-e] <vcs 프로젝트 URL>
pip install [옵션] <아카이브 URL/경로>
삭제는 install 대신 uninstall 하면 된다.
예를 들어 django 패키지를 설치한다면
pip install django
를 입력해 설치할 수 있다.
여기서 문제가 발생할 수 있다.
예를 들어 a라는 패키지는 버전이 3.0이고 이걸로 dev01을 개발했다고 가정해보자
이어서 dev03을 개발하려고 하는데 패키지의 버전이 5.0으로 업그레이드가 되었다.
그런데 a패키지는 3.0과 5.0의 차이가 많아서 호환이 안 된다.
이 경우 dev01은 어떻게 될까?
당연히 사용할 수 없게 된다.
이러면 굉장히 난감해질 수 밖에 없다.
이러한 버전 충돌 문제는 개발자가 해결하기 굉장히 난해할 수 있는데
이를 위해서 나타난 것이 바로 가상개발환경(virtual Environment)이다.
가상환경은 개발자가 필요한 개발 영역마다 파이썬 실행을 위한 가상환경을 다시 재창조 함으로써 이 문제를 한번에 해결할 수 있게 된다.
위 그림을 보자, 가상환경이 총 3개가 있는데 저마다 파이썬의 버전이 다르다.
또한 안의 라이브러리도 재각각이다.
이렇게 필요한 환경이 여러개가 있고 그 환경들을 스위칭해서 사용할 수 있게 해주는 것이 가상환경이다.
가상환경을 설치해보자
CMD를 실행하고 설치하고자 하는 폴더로 이동하고 파이썬 가상환경을 설치해보자
나는 C:\Source\studyPython2023 위치에 설치할 것이다.
cd C:\Source\studyPython2023
경로를 바꾸어 주고
pip install virtualenv
virtualenv를 설치하자
virtualenv venv
이 명령으로 환경을 스위칭 할 수 있다.
자 이쯤되서 파일을 살펴보자
왼쪽은 글로벌환경, 즉 파이썬이 설치된 폴더의 Lib 폴더 내부 모습이다.
오른쪽은 가상환경을 설치한 폴더의 venv 폴더의 Lib 폴더 내부의 모습이다.
즉, 다른환경이 만들어진 것이다.
이제 가상환경을 실행해보자
windows 10등에서 가상환경이 실행되지 않을 수 있다.
이는 OS의 관리자 권한에서 사용이 막혀있기 때문이다.
cmd 대신 windows PowerShell을 실행해보자
cmd랑 비슷한데 마이크로소프트에서 cmd를 업그레이드를 한 것이다.
단, 이것을 관리자권한으로 실행해야 한다.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
정책을 바꿔서 실행할 수 있다.
이제 VS-CODE로 넘어가서
venv폴더의 Scripts 폴더로 들어간 다음, 다음을 입력해주자
.\activate.bat
.\activate.ps1
이 사진처럼 왼쪽에 (venv)가 나타나면 가상환경이 성공적으로 실행된 것이다.
만약 안된다면 터미널을 모두 정리하고 새로운 터미널을 열어서 해보자
자, 이제 가상환경 전용 파이썬을 설치해 주자
python
import.sys
sys.executable
이로써 가상환경에 사용할 전용 python이 생겼다.
이제 이 경로에서 pip를 통해 패키지를 설치하면 이 가상환경에서만 설치가 된다.
여기에 django를 설치하고 파이썬 전역폴더와 이 가상환경을 비교해보자
python311 폴더의 Lib 폴더의 site-packages폴더와
내 작업 폴더의 venv 폴더의 Lib 폴더의 site-packages 폴더를 비교해보자
왼쪽이 글로벌 폴더, 오른쪽이 가상환경이다.
가상환경부분에는 Django 폴더가 있지만 글로벌 폴더에는 없는 것을 볼 수 있다.