Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
11-25 09:26
관리 메뉴

ulismoon

[Python] 독립적인 가상의 파이썬 실행환경, virtualenv (2) 본문

Development

[Python] 독립적인 가상의 파이썬 실행환경, virtualenv (2)

ulismoon 2016. 5. 13. 23:51

PATH?

이전 글에서 virtualenv 사용법을 알아봤는데, 과연 그래서 무슨 PATH를 어떻게 손본다는걸까?


우리가 쉘에서 그냥 명령어 두들겨서 쓸 수 있는 프로그램들은 각종 bin 디렉터리 안에 들어있다.


터미널에서야 그냥 아무 생각 없이 쓰지만 그게 다 이미 어디있는걸 갖다 쓰라는 설정이 돼있다는 말이다.


파이썬을 예로 들어보자. 터미널에서 그냥 파이썬을 두들기면 파이썬 대화형 인터프리터가 실행된다. 여튼 무슨 프로그램이 실행됐다는 건데...


파이썬 명령어가 어디 있는지 which 명령어로 확인해보니 /usr/bin 안에 있다고 한다. 그럼 저런 것들은 어디에 모여있을까?


답은 여기 있다. $PATH 변수를 찾아보자.


오 뭔가 엄청 많은 경로들이 콜론(:)으로 구분돼있다. 저 중간 어디 보니까 /usr/bin 도 있네. 이제 감이 좀 오는가? 저기 있는 저 path들을 뒤적뒤적하면서 해당하는 프로그램이 있으면 실행시키는 거다. 근데 진짜 저기 파이썬이 있을까?



오 있다..! 그럼 이제 대충 $PATH가 하는 일이 뭔지 알 것 같네. 어떻게 작동하는지도.

virtualenv의 역할

그러면 과연 virtualenv를 사용한 상태에서는 저 $PATH가 어떻게 변하는걸까? 이전 글에서 봤던 project_1에서 확인해보자.

맨 앞에 저거 보이심? virtualenv를 활성화시키니까 .venv/bin이 PATH에 추가되었다. 이제 그러면 환경변수는 여기가 최우선이 되겠지 왜? 앞에 있으니까.


따라서 virtualenv가 켜져있는 이상 모든 파이썬 관련 명령의 기준은 내가 생성한 virtualenv 디렉터리가 될 것이며,패키지 설치도 이 디렉터리를 기준으로 할 것이기 때문에 저 어딘가에 설치가 된다. 확인해보자.



패키지가 요기잉네? 그러면 다른 버전을 깔아놓은 project_2에는 다른 버전이 있겠지?


보이는가 1.0과 0.9의 차이가? 완전히 독립된 곳에 두 개의 버전 다른 라이브러리가 존재하고 있다. virtualenv는 이런 방식으로 우리에게 꿀같은 가상 개발환경을 만들어주고 있다. 감사히 무조건 쓰자 ㅋㅋ


tl;dr

우리가 실행하는 명령어는 각종 bin 안에 담겨있고, 이는 $PATH라는 변수에 모여있다.

virtualenv는 우리가 만든 가상환경 디렉터리를 $PATH 최전방에 삽입해 환경을 슬쩍 바꿔치기한다.

virtualenv를 알맞은 곳에서 알맞게 활성화/비활성화한다면 우리는 패키지 꼬일 걱정 없이 개발에 집중할 수 있다.


ps. 윈도우의 경우 저런 것들이 %PATH% 변수 안에 들어있다. cmd에서 확인할 수 있다.


Comments