Virtualenv로 Python2, Python3 환경 만들기

Python을 쓸 때 virtualenv는 필수였다. 거기에 덤으로 virtualenvwrapper도 같이 쓰곤 했다.

그러던 중 누군가 나에게 말했다.

아직도 Python2를 쓴다고? 이제 대세는 Python3이야!

팔랑귀였던 나는 당장 Python3을 설치했다.

하지만 뭔가 문제가 생겼다.
터미널에서 virtualenv + virtualenvwrapper의 조합으로 가상환경을 구성해 쓰던 나였는데 virtualenv 이 놈은 Python2만 바라보고 있으니 Python3는 가상환경을 구성하지 못하는 불편함이 있었다.

혹시 방법이 있을까해서 help를 쳐봤다.

1
2
3
4
5
6
7
8
9
10
11
$ mkvirtualenv --help
...

-p PYTHON_EXE, --python=PYTHON_EXE
The Python interpreter to use, e.g.,
--python=python2.5 will use the python2.5 interpreter
to create the new environment. The default is the
interpreter that virtualenv was installed with
(/usr/local/opt/python/bin/python2.7)

...

나같은 사람이 나뿐만이 아니었나보다.

방법

1
2
3
4
5
6
$ mkvirtualenv -p /usr/local/bin/python3 python3

...

(python3) $ python --version
Python 3.5.2

mkvirtualenv -p <PYTHON_PATH> <VIRTUALENV_NAME>

이 명령어를 기억하자.

그리고

conda라는 것도 있던데 나중에 한번 써봐야겠다.

Jupyter에 virtualenv 커널 추가하기

보통 Python 을 쓸 때 virtualenv 를 사용해 독립적인 환경을 구성해놓고 썻다.

virtualenv 를 사용하면 각 환경 별로 패키지를 달리 설치하여 충돌도 막아주고 깔끔한 개발 환경은 지원해주기 때문이다.

하지만 Jupyter 는 개발 환경에 독립적일 필요가 없으니 virtualenv 에 가두지 않고 글로벌하게 설치했다.

그리고 당연하게도 Jupyter 에서 virtualenv 에 설치된 패키지들에 접근하지 못했다.

순간 “그럼 virtualenv 안에 Jupyter 를 설치해야 되는구나!” 라는 생각을 했지만 이건 아닌것 같아서 구글링을 시작했다.

그리고 역시 은 있었다!

설정

일단 적당한 virtualenv를 만들어 놓자.

Jupyter 의 설정들을 보기 위해 터미널에서 jupyter --paths 를 입력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
$ jupyter --paths
config:
/Users/mac/.jupyter
/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/etc/jupyter
/usr/local/etc/jupyter
/etc/jupyter
data:
/Users/mac/Library/Jupyter
/usr/local/Cellar/python/2.7.12/Frameworks/Python.framework/Versions/2.7/share/jupyter
/usr/local/share/jupyter
/usr/share/jupyter
runtime:
/Users/mac/Library/Jupyter/runtime

그리고 아까 생성한 virtualenv 를 활성화하고, which python 명령어로 가상환경의 위치를 파악한다.

1
2
(tensorflow) $ which python
/Users/mac/.envs/tensorflow/bin/python

그리고 ipykernel 모듈을 설치한다.

1
(tensorflow) $ pip install ipykernel

이제 Jupyter 에 kernel을 추가만 하면 된다.(까먹지말자)

1
$ mkdir /Users/mac/Library/Jupyter/kernels/tensorflow

마지막으로 kernel.json file을 하나 생성해주자.

1
2
3
4
5
6
{
"argv": [ "/Users/mac/.envs/tensorflow/bin/python", "-m", "ipykernel",
"-f", "{connection_file}"],
"display_name": "tensorflow",
"language": "python"
}

그리고 Jupyter를 실행하고 확인하면!

jupyter_1

tensorflow 라는 커널이 추가된 것을 확인할 수 있다!

Refer

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×