728x90


파이썬을 사용하다보면 모듈을 로컬로 사용해야할 필요가 있다.

사실 이는 requirements.txt와 pip를 사용해서 패키지를 설치할 경우 이는 글로벌로 설치되기 때문이다.

따라서 글로벌로 설치하는 것이 아닌 로컬로 설치하는 방식이 필요한데...

문제는 이게 파이썬에서는 없다! 파이썬은 모두 글로벌로 설치한다는 아주 골때리는 상황이 벌어지게 된다.

그렇다고 모두 글로벌에 설치하게 둘순 없잖나...

왜 문제인지 물어본다면 요약하자면 아래와 같다.


1.특정 모듈이 다른 모듈에 버전에 의존하는경우, 기존 글로벌에 설치된 버전이 안맞는 경우가 존재

2.글로벌에 존재하는 모듈의 이름이 설치하려는 다름모듈과 이름이 겹치는 경우가 존재

3.특정 모듈이 특정 파이썬의 버전에 의존


기존의 방식으로는 이 방법을 해결할 수없다.

기존의 파이썬을 지우고 원하는 버전을 새로 설치하던가 아니면 기존의 모듈들을 지우던가 하는 경우가 또 발생하게 된다.

만약 파이썬 어플 두개 이상을 사용한다면 훨씬 골때려진다.

가량 1번 앱을 키고 2번 앱을 키고 1번과 2번이 데이터를 주고 받는 경우, 1번에는 반드시 v1이이 필요하고 2번은 v2가 필요하다면?

이 경우는 무조건 적으로 해결불가다.


그래서 새로운 방식이 도입됬는데 작은 가상환경을 만들고 파이썬도 따로 설치, pip도 따로 설치해서 작게 사용하는 방식이다.

이를 가상환경이라는 이름으로 virtualenv라고 부르기로 했다.

그래서 실제로 사용하는 현업에서는 virtualenv(줄여서 venv라고 부르는 경우가 많다.) 거의 필수로 사용된다.

그럼 사용하는 방법을 보도록 하자.



python3 --version

pip3 --version


먼저 파이썬과 pip가 설치되어있는지 확인한다.



pip3 install virtualenv


virtualenv를 설치해준다.



virtualenv --version


제대로 설치됬는 지를 확인하자.


virtualenv로 프로젝트 만들기



virtualenv <프로젝트>


virtualenv로 프로젝트를 만들어준다.

사용하는 방법은 간단하다.



source ./venv/bin/activate


그다음 가상환경을 켜야한다. 그럴경우 pip3, python3는 해당 폴더에있는 버전으로 고정이된다.

그래서 로컬로 pip를 설치하는 효과가 난다.



아무거나 모듈을 설치해보자.



pip freeze > requirements.txt


pip에서는 requirements.txt로 설치하는 습성이 있다. node에서는 package.json같은 녀석이다.

freeze명령어로 현재 사용중인 모듈을 requirements.txt로 보내준다.



pyserial이 설치된걸 확인할 수 있다.



pip list


리스트를 보면 역시 설치된 녀석과 wheel,setuptools,pip만 존재하는걸 알 수 있다.



deactivate


끄고 싶다면 deactivate를 사용하면 가상환경이 종료된다.


이제 여러분은 패키지를 관리할때 반드시 virtualenv를 사용해주는게 좋다.


하지만 이 모든게 아나콘다에 내장되 있으므로 우리는 갓갓 아나콘다를 사용하면된다.


+ Recent posts