코학다식
pyenv와 pyenv-virtualenv를 사용한 파이썬 개발 환경 구성하기 본문
왜 필요한가?
- 여러 프로젝트를 동시에 진행하면 다양한 버전을 사용하게 되기 때문에 파이썬 버전을 분리해서 사용해야 한다. 이때
pyenv
라는 파이썬 버전 관리 시스템을 사용한다. pyenv-virtualenv
는 pyenv와 밀접하게 사용할 수 있는 패키지이다. 가상환경은 프로젝트 각각에 설치된 패키지들 사이의 충돌을 막아 주기 위해 필요하다.
- 여러 프로젝트를 동시에 진행하면 다양한 버전을 사용하게 되기 때문에 파이썬 버전을 분리해서 사용해야 한다. 이때
- 명령어를 입력하고 명령 수행이 완료된 것처럼 보여도 실제로는 적용되지 않는 경우가 있다. 꼭 확인해 보도록 하자.
설정 순서
pyenv, pyenv-virtaulenv 설치
설치 후 pyenv 설정을 shell 설정 파일에 추가
- 정상적으로 pyenv, pyenv-virtualenv가 동작할 수 있기 위해 필요한 과정이다.
2번까지의 과정을 완료 후 시스템 전역에서 사용할 파이썬 설정
pyenv install --list
를 입력하면 설치 가능한 파이썬 버전을 알 수 있다.pyenv install <version>
으로 원하는 버전을 설치한다.pyenv versions
를 입력하면 pyenv로 현재 자신의 시스템에서 관리되는 파이썬 버전들을 볼 수 있다.~/.pyenv/versions
에서도 확인 가능하다.
pyenv global <version>
을 입력하면 해당 version을 시스템 전역에서 사용하게 된다.
pyenv-virtaulenv를 사용한 가상환경 관리
pyenv virtualenv <version> <env_name>
을 입력하면 가상환경을 생성할 수 있다.- 시스템에 어느 위치에서 생성하든 상관없다.
생성한 가상환경을 프로젝트 폴더와 연결한다.
- 가상환경은 프로젝트 폴더 단위로 구분해서 사용한다.
- 프로젝트 모음 폴더->프로젝트 폴더1, 프로젝트 폴더2, ... 같은 방식으로 관리하는 게 좋다.
- 가상환경을 지정할 프로젝트 폴더를 생성했다면, 해당 폴더로 들어가
pyenv local <env_name>
을 입력하면 가상환경이 적용된다. - 가상환경이 적용되면 프롬프트 좌측에 적용된 가상환경의 이름이 표시된다. 프로젝트 폴더에서
pyenv versions
을 입력해도 확인할 수 있다.
(env_example) ~/projects/project_example$
마치며
모든 과정이 끝난 후의 모습을 그림으로 나타내면 다음과 같다. 위에서 ~/.pyenv/versions
에서도 pyenv로 자신의 시스템에서 관리되는 파이썬 버전들을 볼 수 있다고 언급했는데, 가상환경 설정을 끝내고 다시 위의 경로로 들어가면 만든 가상환경이 가상환경을 만들 때 정한 파이썬 버전으로 관리되고 있음음 알 수 있다.
예를 들어, env_example이라는 이름으로 가상환경을 만들었다면 ~/.pyenv/versions
로 들어가서 해당 폴더에 존재하는 파일을 확인했을 때 다음과 같은 것을 볼 수 있을 것이다.
- (추가) pycharm 사용하기
vim 대신 파이썬 IDE(Integrated Development Environment)인 pycharm을 이용한다. pycharm 설치 후 프로젝트 폴더를 연다. 다음과 같은 화면을 볼 수 있을 것이다.
이제 file -> settings -> project: 프로젝트 폴더명으로 들어가 보자. Project interpreter가 터미널에서 프로젝트 폴더에 연결해 준 가상환경이어야 하는데, 아닌 경우가 있다. 이때는 project interpreter를 변경해 주어야 한다.
Project interpreter 반대편의 톱니바퀴를 누르고 Show all을 선택한다.
+
버튼을 눌러 interpreter를 추가한다.
Existing environment에 프로젝트 폴더에 지정한 가상환경이 보인다. OK를 눌러 추가하고 interpreter를 변경한다.
'Programming > Python' 카테고리의 다른 글
파이썬과 BeautifulSoup을 활용한 간단한 네이버 웹툰 크롤링 (0) | 2020.09.01 |
---|---|
[파이썬(Python)] 자료 구조와 알고리즘(2) (0) | 2019.08.30 |
[파이썬(Python)] 정규 표현식 알아보기(2) (0) | 2019.08.29 |
[파이썬(Python)] 정규 표현식 알아보기(1) (0) | 2019.08.27 |
[파이썬(Python)] 자료 구조와 알고리즘(1) (0) | 2019.08.25 |