Skip to content
TUWLAB.com
모든 게시물에 대하여 '링크'
방식의 퍼가기만 허용합니다.
한양대학교 전자통신컴퓨터공학부
바라미
  • 626
  • 2586851
DNS Powered by DNSEver.com
Python

pyenv를 이용하여 여러 버전의 Python 동시에 사용하기

Posted 2015. 07. 30 Updated 2016. 07. 12 Views 14281 Replies 3

지극히 개인적인 프로그래밍 언어에 대한 철학(?)으로 인해 그동안 파이썬을 기피해 왔습니다.ㅎㅎ 그 철학(?)이라고 할 것도 그렇게 거창한 것들은 없지만, 무엇보다도 Indent로 Code block을 구분한다는 사실에 충격(+문화컬쳐)을 먹고 지금까지 쳐다보지도 않았습니다.

헌데 근래에 연구 프로젝트 관련하여 반 강제적으로 써야 할 일이 생겨서 책펴놓고 급하게 공부하는 중입니다. (하아..ㅠㅠ) C/C++과 달리 물렁물렁한 문법들 때문에 많은 곶통을 받고 있지만, 그래도 해야겠..죠??

Python 책을 보는데, 저자가 심심치 않게 2.x 버전과 3.x 버전을 구분하고 있습니다. 여기서부터 뭔가 심상치 않은 낌새를 느끼긴 했는데.. 2.x버전과 3.x 버전이 그렇게 다르다면서요-??ㅡㅡ^


새로 공부하는 입장에서 최신 버전에 맞춰서 공부하고싶긴 하지만, 프로젝트에 사용하는 프로그램은 Python 2.x버전을 사용하고 있습니다. 찾아보니 3.x 버전의 하위호환성은 보장되지 않는다고 하니, 두 가지 Python 버전을 필요에 따라 스위칭하며 사용할 필요가 있었습니다.


예전에 Node.js 프로그래밍을 할 때는 NVM(Node Version Manager)이라는 유틸리티를 사용해서 여러 버전의 Node를 바꿔 가며 사용했던 적이 있습니다. 아무래도 Node.js가 등장한 초창기이고, 버전업을 할 때마다 갈아엎는 API가 많아서 이런 유틸리티가 등장했던 것 같습니다. (Ruby도 RVM이라는 버전관리 유틸리티가 있습니다.)

Python도 2.x 버전과 3.x 버전이 심심치 않게 다르다고 하니, 이런 종류의 버전 스위칭 유틸이 분명 있을 것이다라고 생각하며 구글링을 했습니다. 역시나 이미 누군가가 벌써 만들어서 배포중이었습니다.ㅎㅎ

https://github.com/yyuu/pyenv


pyenv 설치하고 설정하기

의존성 패키지 설치하기

Ubuntu환경에서 개발을 주로 하는 경우 의존성 패키지가 대부분 이미 설치되어 있겠지만, 만약을 위해 다시 한 번 확인해 주도록 합니다.

의존성 패키지가 설치되어 있지 않으면, pyenv를 설치하는 시점에는 아무 문제가 없더라도 추후에 사용할 때 귀찮은 오류들이 발생할 수 있습니다.

$ sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev llvm

참고로, CentOS에서는 다음 패키지들을 설치합니다.

yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite \
sqlite-devel mysql-devel 


pyenv 설치하기

pyenv는 자동으로 설치하고 설정해 주는 Installer를 별도로 제공하고 있으므로 Shell에서 다음 한 줄 명령으로 간단하게 설치할 수 있습니다.

$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash


Path에 등록하기

설치 과정에서 PATH는 자동으로 추가해 주지 않으므로 다음 내용을 ~/.bashrc파일 끝부분에 추가해줘야 합니다.

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

이제 Shell을 다시 실행하고 아무런 오류 메시지가 출력되지 않으면 pyenv를 사용할 준비가 끝난 것입니다.


pyenv 사용 방법


설치된 Python 버전 목록 확인하기

$ pyenv versions

현재 사용중인 버전 앞에는 '*'이 붙어서 나타납니다. pyenv를 처음 설치했다면 'system' 항목만 나타날 것이며, 이는 현 시스템에 전역적으로 설치된 버전의 Python을 나타냅니다.


새로운 버전의 Python 설치하기

$ pyenv install x.y.z

x.y.z에는 설치할 Python의 버전을 명시해 줍니다. 친절하게도(!) 자동완성 기능도 구현되어 있습니다.

참고로, pyenv로 새로운 버전의 Python을 설치하는 것은 현재 사용자에게만 영향을 미칩니다. 실제로 설치되는 위치도 /usr/bin 등의 시스템 디렉토리가 아닌, 현 사용자의 홈 디렉토리 내의 .pyenv 디렉토리 안에 설치됩니다.

따라서, pyenv 명령은 sudo와 함께 사용할 필요가 없습니다.


사용할 Python 버전 변경하기

$ pyenv global x.y.z

역시 x.y.z에는 사용할 Python의 버전을 명시해 줍니다. 단, pyenv  install을 통해 설치한 버전이어야만 합니다. 시스템에 설치된 Python으로 전환하려면 x.y.z 대신 system을 입력하면 됩니다.

이렇게 하면 현재 로그인한 사용자의 Shell에서 사용하는 Python의 버전이 그에 맞게 바뀝니다. 정상적으로 버전이 바뀌었다면, 아무런 메시지도 출력되지 않습니다.

'뭐, 버전을 바꿨는데 아무 메시지도 안뜨는데 바뀐거 맞아??'라는 의심이 든다면, 다음 명령으로 활성화된 Python의 버전을 확인해 보세요.

$ python --version


(+) 다음과 같이 global 대신 local을 사용하면 현재 디렉토리에서 사용할 Python 버전을 따로 지정할 수 있습니다.

$ pyenv local x.y.z

이 명령은 프로젝트별로 사용하는 Python 버전이 다를 경우 요긴하게 사용할 수 있을 것입니다.


TAG •
서비스 선택
이용중인 SNS 버튼을 클릭하여 로그인 해주세요.
SNS 계정을 통해 로그인하면 회원가입 없이 댓글을 남길 수 있습니다.
댓글
?
Powered by SocialXE


List of Articles
번호 분류 제목 글쓴이 최근 수정일 조회 수
49 Linux Ubuntu에서 PATH 설정하기 TUW 2014.04.20 60928
48 Linux Ubuntu에서 Global Menu Bar 해제하기 TUW 2014.04.24 11875
47 Linux Ubuntu에서 GIT Client 설치 및 사용하기 TUW 2014.04.24 13706
46 Linux Ubuntu에 GITLAB 설치하기 A to Z, Apache 연동 file TUW 2017.06.02 22469
45 Linux Ubuntu 에서 VirtualBox로 Windows 7 설치 및 사용하기 1 file TUW 2017.06.02 23346
44 Linux TCPDump를 활용하여 패킷 모니터링하기 TUW 2020.04.13 7196
43 일반 TCP/IP의 원리를 쉽게 설명한 동영상 TUW 2021.12.28 9424
42 Security SSL Handshake 과정 TUW 2016.06.21 7331
41 Linux SSHFS를 활용한 원격 디렉토리 마운트 TUW 2014.04.24 10072
40 XE Social XE 트위터 프로필사진 표시 문제 해결하기 3 file TUW 2017.06.02 205147
39 XE Social XE 댓글 위젯에 SNS 전송 옵션 추가하기 6 file TUW 2017.06.02 23632
38 Linux SCP명령어 - 초간단 파일/디렉토리 전송 TUW 2014.04.23 41252
37 일반 Scan Robot - 전자동 북스캐너 file TUW 2017.06.02 9809
36 Linux Root권한 없이 Wireshark 사용하기 file TUW 2017.06.02 109056
35 Apache robots.txt를 활용하여 검색엔진 로봇 인덱싱 제한하기 TUW 2014.04.23 9463
» Python pyenv를 이용하여 여러 버전의 Python 동시에 사용하기 3 TUW 2016.07.12 14281
목록
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 Next
/ 13

Powered by Xpress Engine / Designed by Sketchbook

sketchbook5, 스케치북5

sketchbook5, 스케치북5