본문 바로가기
개발

Pyenv를 이용하여 가상 환경에서 작업하기

by 마스터누누 2018. 10. 20.
728x90
반응형




javascript로 웹 개발만 하다가 사이드 프로젝트에 Django를 사용하게 되어, 파이썬을 사용하게 되었다. 

파이썬을 주력으로 사용하지 않아 군데군데 오류가 있을 수 있지만, 추후에 동일한 환경을 구축해야하는 경우를 위해 포스팅을 남겨둔다.




1. 왜 가상환경인가?


1) 로컬과 글로벌 환경의 차이


예를 들어 글로벌에서는 2.x의 파이썬이 설치되어 있지만, 실제 개발 환경에서는 3.x의 파이썬 버전을 사용해야 할때가 있다. 또한 여러개의 프로젝트를 동시에 진행할 때, 프로젝트가 요구하는 파이썬이나 모듈의 버전이 각기 다른 경우가 있다. 이 때, Pyenv를 사용한다면 가상의 환경을 넘나 들며, 다른 버전의 모듈을 편리하게 사용할수 있는 장점이 있다.



2) 작업 환경 공유의 편의성


프로젝트에 참여하는 신규 개발자가 개발환경을 세팅 하기 위해서는, 해당 프로젝트가 실행되기 위해 동일한 모듈을 설치해 주어야한다. 이 때 가상환경에 설치된 모듈들의 정보만 알면 명령어 한줄로 동일한 환경을 만들 수 있다.




2. 가상환경 설치 및 설정 (Mac 기준)


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
# pip 설치
$ sudo easy_install pip
 
# xcode 명령어 라인 도구 설치
xcode-select --install
 
# pyenv 설치
$ brew install pyenv
 
# 환경변수 설정
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
 
# 설정 파일 실행
$ source ~/.bash_profile
 
# virtualenv 설치
$ brew install pyenv-virtualenv
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
 
# 파이썬 버전 확인 후 특정 버전 설치(현재 기준 텐서플로가 지원되는 최신 버전은 3.5.6 이다)
$ pyenv install --list
$ pyenv install [python version]
 
# 가상 환경 생성 및 실행
$ pyenv virtualenv [python version] [environment name]
$ pyenv activate [environment name]
$ pyenv deactivate
cs




2-1. 특정 버전 파이썬이 설치되지 않을 경우


1
2
3
4
5
$ brew install homebrew/dupes/zlib
$ brew install readline xz
$ CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v [python version]
cs

설치를 진행하다가 특정 버전의 파이썬이 설치되지 않을 경우 위의 코드를 입력해준다.



3. 프로젝트 폴더 진입 시 가상 환경 자동 실행

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ brew install autoenv
echo 'source /usr/local/opt/autoenv/activate.sh' >> ~/.bash_profile
$ source ~/.bash_profile
 
/Users/eunwoo/.zshrc:source:112: no such file or directory: /Users/eunwoo/.autoenv/activate.sh
autoenv:
autoenv: WARNING:
autoenv: This is the first time you are about to source /Users/eunwoo/Desktop/tensorflow/.env:
autoenv:
autoenv:   --- (begin contents) ---------------------------------------
autoenv:     pyenv activate tensorflow$
autoenv:
autoenv:   --- (end contents) -----------------------------------------
autoenv:
autoenv: Are you sure you want to allow this? (y/N)
cs


pyenv를 사용하여 가상환경을 실행 종료시킬때, activate/deactivate를 사용하는데, 이는 매우 번거로운 일이다. 

autoenv를 사용하면 프로젝트 폴더의 .env 파일을 읽어서 실행시켜주기 때문에 자동 실행 설정이 가능하다.

우선 위의 코드로  autoenv 설치 및 설정을 완료한다.




1
2
3
4
5
$ cd [project directory]
$ vim .env
 
# .env을 생성하여 아래의 코드를 입력
pyenv activate [environment name]
cs


그리고 자신의 프로젝트 파일로 들어가 .env 파일을 생성한 후 가상환경을 실행하는 명령어를 입력해준다.

다시 디렉토리 밖으로 나왔다가 들어와서 정상적으로 동작이 되는지 확인한다.




4. pyenv 명령어


1
2
3
4
5
6
7
8
9
$ pyenv install --list # 다운가능한 파이썬 버전 목록 보기
$ pyenv install [python version] # 특정 파이썬 버전 설치
$ pyenv versions # 설치된 python의 버전들 보기
$ pyenv uninstall [environment name] # 가상환경 삭제
 
# pyenv-virtualenv 명령어
$ pyenv virtualenv [python version] [environment name] # 가상환경 생성
$ pyenv activate [environment name] # 가상 환경 실행
$ pyenv deactivate # 가상 환경 종료
cs


반응형

댓글