회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
AWS 이용 중이라면 최대 700만 원 지원받으세요
이 세상엔 수많은 언어가 존재합니다.
회원가입을 하면 원하는 문장을
저장할 수 있어요!
다음
회원가입을 하면
성장에 도움이 되는 콘텐츠를
스크랩할 수 있어요!
확인
이 세상엔 수많은 언어가 존재합니다.
컴퓨터 프로그램 개발을 업으로 삼고 있는 사람에게 어떤 언어를 주로 사용하냐고 묻는다면 대부분 "저는 자바를 사용하는데요?"라는 답을 받게 될 것입니다. 동일한 질문을 컴퓨터랑 상관없는 사람에게 묻는다면 "한국어를 사용합니다"라고 답하겠죠. 그만큼 프로그램 개발자에게 언어라고 하는 건 개발자 자신의 정체성을 나타내는 고유한 명사와도 같습니다.
그런데 이런 개발자들도 개발 환경을 설정하는 일에는 어려움을 겪는 경우가 적지 않습니다. 요즘엔 Go Lang, Rust, Python, Javascript 등은 웹 기반으로 쉽게 배울 수 있어 따로 설치하기 않기 때문입니다. 20여 년 전엔 프로그램 개발을 하기 위해 컴파일러를 제조사에서 구입해서 내려받아(또는 배송받아서) 설치했었습니다.
아, 그런데 잠시만요. 컴파일러라고 했죠? 그리고 컴파일러를 구입한다고요? 20여 년 전만 하더라도 대다수의 사람들은 프로그램 개발을 위해 컴파일러 및 프로그램 개발에 필요한 라이브러리 모음을 구입해서 프로그래밍 하는 것이 일반적인 모습이었습니다.
잠깐 20여 년 전으로 갔다 왔는데요. 프로그램 개발을 하는 모든 이들에겐 그때나 지금이나 프로그램 개발 환경을 구축하는 것은 어렵고 짜증나는 일입니다. 특히 마이크로소프트처럼 개발 도구를 친절하게 다 제공해주는 경우를 제외하고는, 오래전엔 리눅스와 같은 운영체제에서 개발 환경을 구축하는 것은 정말 악명이 높았습니다.
컴파일러를 설치하기 위해 컴파일러를 컴파일 했으니까요. 최근의 리눅스 배포본에서는 컴파일러를 쉽게 설치할 수 있도록 도와주니 우리는 축복받는 사람들일 겁니다.
보통 개발 환경을 구축한다는 것은 다음을 모두 포함하고 있는 용어입니다.
C, C++와 같은 프로그래밍 언어는 컴파일 결과로 운영체제가 바로 실행할 수 있는 0과 1로 이루어진 기계어로 구성된 파일이 만들어지기 때문에 별도의 소스 코드 실행 명령이 필요하지 않습니다. 하지만 자바나 파이썬, 루비 등의 프로그래밍 언어는 기계어로 구성된 파일을 만들지 않기 때문에 우리가 작성한 프로그램 코드를 직접 실행할 별도의 도구가 필요한데, 이 도구를 "개발 런타임"이라고 부릅니다. 이 글의 후속에서 설명하겠지만 Node.Js는 프로그래밍 언어가 아니라 자바스크립트 런타임입니다.
C, C++ 등의 프로그래밍 언어와 달리 자바, 파이썬, 자바스크립트 같은 언어들은 끊임없이 새 버전의 개발 런타임이 발표되며, 새 버전에서만 제공되는 기능을 사용하려면 프로그래머가 새 버전의 개발 런타임을 설치해야만 합니다.
과거의 개발 환경에서는 개발 런타임을 신규로 설치할 일이 거의 없었고 특별한 일이 없으면 개발 런타임을 업그레이드하는 일도 이루어지지 않았지만, 최근엔 이런 일의 빈도가 매우 빠르게 늘어나고 있습니다. 덧붙여 자바 언어의 개발사인 오라클이 자바 언어 런타임을 유료화 시키면서 새로운 자바 언어 런타임이 빠르게 늘기도 했습니다.
C, C++ 등의 컴파일 언어와 달리 개발 런타임을 사용하는 언어는 프로그램마다 사용하는 라이브러리가 다른 경우는 물론이고 같은 라이브러리를 사용하더라도 버전이 다를 수 있습니다. 심지어는 라이브러리가 지원하는 개발 런타임의 버전이 다른 경우도 존재합니다. 그러다 보니 개발 환경을 구축한다는 것이 당연히 어렵다면 어려울 수밖에 없게 된 거죠.
그래서 이 글에서는 개발 런타임을 사용하는 언어 중 파이썬을 중심으로 리눅스에서 개발 런타임을 구축하는 방법을 살펴보겠습니다.
파이썬의 개발 런타임 구축을 도와주는 도구는 여러 가지가 있지만 여기서는 pyenv를 살펴봅니다. pyenv는 여러 파이썬 개발 런타임을 자동으로 설치해주고 바로 사용할 수 있도록 준비해주는 대표적인 도구입니다.
pyenv는 pyenv 저장소에서 내려받을 수 있으며 다음 운영체제를 지원합니다.
이 글에서는 다음 환경에 pyenv를 설치합니다.
pyenv를 설치하려면 운영체제에서 사용 중인 셸이 무엇인지 아는 것이 무엇보다 중요합니다. 터미널을 열고 다음 명령을 실행합니다.
$ echo $SHELL
이 명령의 실행 결과가 무엇인지에 따라 pyenv 설치 과정이 조금 바뀝니다. 사용 중인 셸을 확인했으면 다음 단계로 넘어갑니다.
pyenv를 설치하고 사용하려면 운영체제에 몇 개의 프로그램이 미리 설치되어 있어야 합니다. 다음 명령을 내려 프로그램을 미리 설치해둡니다.
$ sudo apt install git curl wget unzip build-essential libssl-dev
이제 pyenv를 설치할 차례입니다. 다음 명령을 셸에서 입력합니다. ($는 입력하시는 거 아니에요)
$ curl https://pyenv.run | bash
이것으로 pyenv 설치가 완료되면 화면에 다음 내용이 나올 겁니다.
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# Restart your shell for the changes to take effect.
# Load pyenv-virtualenv automatically by adding
# the following to ~/.bashrc:
eval "$(pyenv virtualenv-init -)"
이 내용을 사용 중인 운영체제의 셸의 설정 파일에 추가해줍니다. 앞에서 실행한 "echo $SHELL"의 실행 결과를 바로 이때 사용합니다. 이 실행 결과가 /bin/bash라면 위 내용을 ~/.bashrc에 /bin/zsh라면 ~/.zshrc 파일의 끝에 추가해줍니다.
이것으로 pyenv 설치가 완료되었습니다. 터미널 프로그램을 닫았다가 다시 실행하면 본격적으로 pyenv를 사용할 준비가 완료됩니다. 너무 쉬운 거 아니냐고 한 마디 거들고 싶으시죠?
파이썬은 C로 구현된 CPython이 일반적이며, 파이썬이라고 하면 CPython을 가리킵니다. CPython은 운영체제 별로 컴파일해야만 사용할 수 있습니다. 파이썬을 컴파일해서 설치하려면 알아야 할 내용도 많고 설치 명령이 여러 개지만 pyenv는 이 과정을 쉽게 할 수 있도록 도와줍니다.
우선 시스템에 어떤 버전의 파이썬을 설치할 수 있는지 다음 명령을 실행해서 확인합니다.
$ pyenv install -l
이 명령의 실행 결과로 pyenv가 설치할 수 있는 모든 파이썬 런타임을 다음과 같이 보여줍니다.
Available versions:
2.1.3
2.2.3
2.3.7
2.4.0
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
...
우리가 설치할 파이썬 런타임이 3.11.1라면 다음 명령을 내리면 파이썬을 자동으로 컴파일해서 설치해줍니다.
$ pyenv install 3.11.1
이제 파이썬 3.11.1의 설치가 모두 완료되길 기다립니다. 컴파일 시간은 컴퓨터의 성능에 따라 달라질 것이므로 느긋하게 따뜻한 차를 마시는 것도 좋습니다. 새 파이썬 버전의 설치가 완료되면 pyenv에 설치된 모든 파이썬 런타임을 확인해보겠습니다.
$ pyenv versions
system (set by /home/user/.pyenv/version)
3.11.1
위 결과와 유사한 내용이 화면이 나온다면 파이썬 설치가 완료된 것입니다.
pyenv로 파이썬 런타임을 설치했으면 이제 새로 설치된 파이썬 런타임을 사용해 볼 차례입니다. 아직은 1개의 파이썬 런타임만 새로 설치했지만 여러 이유에 의해서 파이썬 런타임은 여러 개가 설치될 수 있습니다.
이렇게 설치된 파이썬들을 사용하려면 다음 명령을 사용합니다. 다음 명령은 파이썬 3.11.1을 사용한다고 가정합니다.
$ pyenv shell 3.11.1
이렇게 하면 현재 실행 중인 셸에서는 python 명령을 실행했을 때 3.11.1 버전이 실행됩니다. 만약 다른 셸을 열고 똑같이 python 명령을 실행하면 운영체제에 설치된 기본 파이썬 버전이 실행되는 것을 볼 수 있습니다.
pyenv shell 명령을 통해 선택된 파이썬은 오로지 현재 실행 중인 셸에만 적용된다는 것을 기억하세요. 특정 파이썬 버전을 사용하다가 운영체제에 설치된 기본 파이썬 버전을 사용하겠다면 다음 명령을 입력하면 됩니다.
$ pyenv shell system
파이썬 패키지 중에는 Flask나 Django처럼 별도의 콘솔 스크립트가 지원되는 패키지가 있습니다. Flask라면 flask, Django라면 django-admin과 같이 셸에서 바로 실행할 수 있는 명령입니다.
pyenv를 사용 중 일 때는 Flask를 설치하더라도 콘솔 스크립트를 바로 실행할 수 없습니다. 이런 일이 벌어나는 이유는 pyenv가 설치된 파이썬 버전을 관리하는 메커니즘 때문에 발생하는 것으로 다음 명령을 한 번 실행하면 콘솔 스크립트를 추가할 수 있습니다.
$ pyenv rehash
콘솔 스크립트가 설치되는 파이썬 패키지라면 반드시 설치 이후 앞의 명령을 실행하셔야 합니다.
pyenv는 파이썬 런타임을 설치해주는 일 외에도 파이썬 가상 환경을 쉽게 만들 수 있도록 도와줍니다. 먼저, 가상 환경이 베이스로 삼을 파이썬 버전으로 변경합니다. 3.11.1 기반의 파이썬 가상 환경을 생성한다면 "pyenv shell 3.11.1"로 우선 변경합니다.
그리고 다음 명령을 내려서 파이썬 가상 환경을 생성합니다.
$ pyenv virtualenv 가상환경이름
앞의 명령에서 ‘가상환경이름’은 여러분이 생성할 가상 환경의 이름을 지정해주면 됩니다. 가상 환경 이름은 운영체제 내에서 디렉터리로 생성하기 때문에 반드시 다음의 규칙을 따라 주셔야 합니다.
이렇게 만든 가상 환경은 pyenv shell 명령으로 사용할 수 있습니다. 생성한 파이썬 가상 환경 이름이 search5 라면 다음과 같이 하면 됩니다.
$ pyenv shell search5
파이썬은 기본 모드로 컴파일 할 경우 정적 모드로 컴파일되는데 파이썬 패키지에 따라 동적 모드로 컴파일된 파이썬에서만 설치되는 경우가 있습니다. 이를 위해 pyenv install를 사용하기 전에 다음과 같이 환경 변수를 하나 생성해주거나 명령 실행 시 인라인으로 제공합니다. 단, CPython을 사용할 때만 사용해야 합니다.
방법 1
$ export PYTHON_CONFIGURE_OPTS="--enable-shared"
$ pyenv install 3.11.1
방법 2
$ PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.11.1
어떤 방법을 사용해도 상관없으니까 여러분 취향대로 쓰시면 됩니다.
파이썬은 운영체제에 설치된 여러 시스템 라이브러리를 자동으로 인식해서 컴파일하는데 이렇다 보니 파이썬 설치 후 특정 모듈이 없다거나 대화식 셸을 사용하는데 뭔가 동작이 아쉽다거나 한다면 이들은 파이썬을 재설치해야만 사용할 수 있습니다. 데비안 계열의 배포본인 데비안, 우분투를 사용한다면 다음의 명령을 내리면 정말 어여쁜 파이썬 컴파일 환경을 만들 수 있습니다.
$ sudo apt install libbz2-dev libncurses-dev libreadline-dev \
libsqlite3-dev liblzma-dev tk-dev
이 글에서 설명한 것 외에도 pyenv에는 더 많은 기능이 있으며 아직 다루지 않은 주제가 있습니다. 여러분이 이 글을 많이 좋아해주시고 pyenv 후속을 요청주시면 pyenv와 관련된 얘기를 더 많이 해드릴게요.
감사합니다.
요즘IT의 모든 콘텐츠는 저작권법의 보호를 받는 바, 무단 전재와 복사, 배포 등을 금합니다.