본문 바로가기
일상속힐링/Tools

기본 파이썬 버전 변경하기 / 파이썬 가상 환경 설정

by 사이테일 2019. 2. 17.

참고 : https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux


Python2를 Python3로 변경하기

나는 기본적으로 python3.x를 선호한다.
하지만 python3을 사용하다 보면, 오픈소스를 실행할 때 에러가 발생하는 경우가 종종 있다(주로 batch 파일을 실행할 때). 이는 해당 오픈소스가 python2.x로 작성되었기 때문인 경우가 많다.
python2와 python3는 여러 차이가 있지만 주로 다음과 같은 print문에서 가장 먼저 에러를 만날 확률이 높다.

D:\v8\source\v8\tools\dev>v8gen.py x64.release
  File "D:\v8\source\v8\tools\dev\v8gen.py", line 147
    print '%s does not exist in %s for %s' % (
                                         ^
SyntaxError: invalid syntax

다음의 명령어로 현재 기본으로 실행되는 파이썬 버전을 확인할 수 있다(여기서 사용되는 명령어는 리눅스 기준).

$ ls /usr/bin/python*
$ python -V

기본 파이썬(python 명령어로 실행되는 버전)을 python2.x로 변경해보자. 변경 방법은 크게 두 가지가 있다.

alias

첫 번째 방법은 alias를 이용하는 것이다. ~/.bashrc을 수정해 새로운 alias를 추가할 수도 있고, 다음의 명령어로 임시로 변경할 수도 있다.

$ alias python='/usr/bin/python2.7'

update-alternatives

두 번째 방법은 update-alternatives를 이용하는 방법이다. 다음의 명령어를 입력하면 python 명령어에 등록된 alternatives를 확인할 수 있다(루트 권한이 필요하다).

# update-alternatives --list python
update-alternatives: error: no alternatives for python

위의 에러 메시지는 update-alternatives에 python이 등록되어 있지 않기 때문에 발생한다. alternatives table에 python2.xpython3.x를 등록해야 한다.

# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
update-alternatives: using /usr/bin/python2.7 to provide /usr/bin/python (python) in auto mode
# update-alternatives --install /usr/bin/python python /usr/bin/python3.5 1
update-alternatives: using /usr/bin/python3.5 to provide /usr/bin/python (python) in auto mode

--install 옵션은 심볼릭 링크를 만들기 위해 여러 인자를 사용한다. 그 중 마지막의 숫자는 우선순위를 의미한다. 메뉴얼로 선택하지 않는다면 이 숫자가 높은 alternative가 사용된다. 여기서는 python2.7이 2로 더 높은 숫자가 설정되었으므로 python2.7이 기본 파이썬으로 사용된다.

# update-alternatives --list python
/usr/bin/python2.7
/usr/bin/python3.5
# update-alternatives --config python

update-alternatives 목록에서 제거하려면 다음의 명령어를 사용하면 된다. python2.7을 삭제하는 예시다.

# update-alternatives --remove python /usr/bin/python2.7
update-alternatives: removing manually selected alternative - switching python to auto mode
update-alternatives: using /usr/bin/python3.4 to provide /usr/bin/python (python) in auto mode

conda

이와 같이 두 가지 방법이 있다. 하지만 내가 선호하는 방법은 콘다(conda) 공간을 사용하는 것이다. 아마 대부분의 파이썬 개발자들이 이러한 방식을 선호하지 않을까 싶다.
아나콘다(anaconda)는 많은 파이썬 패키지를 포함하고 있는 파이썬 배포판이다. 나는 주로 이를 사용해 파이썬을 설치한다. 매우 쉽고 편하다.
아나콘다가 포함하고 있는 것 중 하나가 콘다 환경이다. 일종의 가상 개발 환경이다.
가상 개발 환경은 각 파이썬 버전에 맞는 환경변수 그룹을 만들어서 이름을 부여한다. 즉, 가상환경을 통해 원하는 버전의 파이썬과 해당 패키지를 사용할 수 있게 된다. 이러한 가상 환경 도구에는 virtualenv와 콘다(conda)가 있는데 역할은 동일하다.

다음의 명령어로 콘다 공간을 생성 및 실행할 수 있다.

$ conda create -n Python27 python=2.7
$ conda activate Python27

위 명령어를 통해 python2.7 버전의 Python27 이름으로 콘다 공간을 생성했다. 그리고 activate $name 으로 실행한다.
기타 명령어는 다음과 같다.

// 비활성화
$ conda deactivate

// 가상환경 리스트 출력
$ conda env list

// 가상환경 삭제
$ conda env remove -n $name

가상환경을 활성화한 상태에서 pip를 이용해 추가 파이썬 패키지를 설치할 수도 있다.