서로 다른 Python 버전의 가상 환경 관리하기 (Linux)

유영석·2024년 7월 23일
0

잡다한 정보

목록 보기
12/15
post-thumbnail

정규직으로 회사에 입사하여 정말 길고 긴 연수와 교육 기간을 거쳐 부서 적응을 한 지 어느덧 3달이 가까워집니다. 그로 인해 한동안 블로그는 잠시 잊고 있었는데...저도 모르는 사람이 꽤나 많은 분들이 글을 봐주시고 몇몇 분들이 좋아요와 댓글을 단 것을 보고 정말 행복했습니다. 그래서 이제 다시 블로그에 글을 정리하려 합니다.ㅎㅎ

(예전에 시리즈도 정리하던 CS 관련 글들에 답글이 달린 것을 보고... 끝까지 마무리 하지 못한 제 자신이 이제야 참 아쉬워 지네요. CS 글들은 참 하나 하나를 완성하는 데 리소스가 크게 들어서 앞으로는 엄두가 나지는 않습니다. 그치만 제가 필요하다 생각해지면 언제든 다시 작성하겠...지..요?? 😅)

사실 정말 어떤 프로덕트에 코드를 보기 시작한 건 얼마 되지 않았는데요. 개발 환경을 세팅하기 위해 virtualenv 를 사용해서 환경을 구성하려는데...코드가 정말 레거시해서 꽤나 이전의 파이썬 버전에서 구동이 되더라고요. 따라서, base 로 깔려있는 파이썬 버전이 아닌 구 버전의 파이썬 버전이 필요했습니다.

특정 파이썬 버전 설치

특정 파이썬 버전을 설치하는 방법에는 여러가지가 있을 수 있습니다. 이 글을 쓰기 위해 추가 조사를 해보니 pyenv 라는 툴을 이용할 수도 있는 것 같습니다. 하지만, 저는 그냥 직접하는 게 더 깔끔하다 생각을 합니다.

https://www.python.org/downloads/ 로 들어가 보시면 특정 파이썬 버전을 설치하도록 안내가 되어 있습니다.

들어가시면 WindowMAC 이면 편하게 Installer 받아서 까시면 되는데요. 저는 Linux OS를 기반으로 설명 드리겠습니다. 먼저, 아래를 클릭하여 tar.gz 파일을 받습니다.

이렇게 해도 되지만 사실 단순히 아래와 같이 커맨드를 입력하여 다운로드를 받을 수도 있습니다.

$ wget https://www.python.org/ftp/python/[version]/Python-[version].tgz

### 예시
$ wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz

그렇게 받은 파일의 압축을 해제하고 들어가 봅니다.

$ tar xvfz Python-3.7.4.tgz 
$ cd Python-3.7.4

이 폴더는 파이썬 자체의 소스코드입니다. 파이썬을 사용하기 위해 아래의 커맨드로 빌드를 합니다.

$ ./configure --enable-optimizations
$ sudo make altinstall

빌드에 문제가 생긴다면 원인이 몇 가지 있을 수 있지만, 가장 자명한 것은 gcc 가 올바로 설치되어 있는지 확인을 해보세요. 파이썬은 C로 작성되어 있으니 (그래서 cPython...) 빌드를 위해 gcc 는 꼭 필요하니까요.

그렇게 되면 /usr/local/binpython3.7 과 같이 새로운 버전의 파이썬 바이너리가 생겼을 것입니다. (혹시나 모르는 분들을 위해 말씀 드리자면 /usr/bin 에는 패키지 매니저 (ex. apt, yum ...) 로 설치한 바이너리가, /usr/local/bin 에는 이와 같이 사용자가 직접 설치한 바이너리가 저장됩니다.)

설치한 특정 버전으로 가상 환경 생성 (virtualenv)

간단합니다. virutalenv-p = --python (둘 중 아무거나) 옵션을 넣어서 특정 파이썬 인터프리터를 지정할 수 있습니다. 그래서 아래와 같이 설치된 파이썬 경로를 넣어주면 손 쉽게 가상환경 생성이 가능합니다.

virtualenv env_name -p /usr/local/bin/python3.7

이번 포스트는 너무나 가벼운 주제를 다뤄보았습니다. 하지만 언제나 그렇듯 제가 조금 시행착오와 헤맸던 부분이 있어 이렇게 그냥 가이드를 적어 놓습니다. 앞으로 본격적으로 일을 하다 보면 조금 더 어려운(?) 무거운 주제에 대한 깨달음에 대해 블로그로 전달하지 않을까 하는 기대와 함께 글을 마칩니다.

profile
소프트웨어 엔지니어

0개의 댓글