본문 바로가기

Program Languages/Python

Python 소스코드에서 설치하는 방법

Python을 소스코드에서 부터 컴파일하려는 경우 어떤 것 부터 해야하는지 막막하셨던 경험이 있으실 지도 모르겠습니다.

 

우선 Python을 소스코드에서 부터 컴파일해서 python 설치가 필요한 경우는 대략 아래와 같습니다.

  1. 자동 인스톨 명령어를 통해 설치를 시도해봤지만 운영체제 버전이나 파이썬 버전 번호등 해당 버전들에서 옵션 지원이 원활하지 않는 경우
  2. 특정 python 모듈 라이브러리가 하위 혹은 상위 버전의 파이썬을 지원하지 않는 경우
  3. 가상환경(venv등등)을 사용을 하지 않고 추가적인 파이썬 환경이 필요한 경우
  4. 여러 운영체제관련 시스템 라이브러리 종속성에 관련된 빌트인 파이썬 프로그램과 충돌해서 따로 설치하는 것이 문제 해결에 더 빠른 경우
  5. 기타 여러가지 경우

 


윈도우(Windows)의 경우에는 소스코드 압축 파일 자체가 리눅스 기반 언어로 작성되어 있다 보니 mingw라는 컴파일러를 사용하지 않고서는 컴파일하는 것 자체가 힘들어 https://www.python.org/downloads/windows/ 에서 인스톨러나 embeddable package를 다운로드하셔서 실행하시는 것을 추천드립니다.


우분투(리눅스)의 경우에는 https://www.python.org/downloads/source/ 에서 원하시는 버전의 python tar.xz파일을 다운로드 합니다.

더보기

혹은 아래의 명령어로도 다운로드 하실 수있습니다

wget -c https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tar.xz

 

파일 다운로드뒤 터미널을 키신뒤 다운로드된 파일이 있는 폴더로 이동해 tar.xz파일의 압축을 풀어줍니다.

cd "다운로드 받은 파일의 폴더 경로"
tar xvf "다운로드 받은 파일명.tar.xz"
echo "tar명령어가 에러나면 아래 tar 명령어 실행"
echo "tar xvzf '다운로드 받은 파일명.tar.xz'"
cd "Python-'다운로드 받은 파이썬 버전번호'(폴더명)"

 

컴파일 하기에 앞서 해당 명령어를 입력해 해당 컴퓨터 환경에 맞는 시스템 동적/정적 라이브러리 및 컴파일 유틸리티를 설치합니다.

sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install zlib1g \
zlib1g-dev \
libbz2-dev \
libsqlite3-dev \
libtiff-dev \
libffi-dev \
libssl-dev \
libxslt1-dev \
libxml2-dev \
libreadline-dev \
libncurses5-dev \
libnss3-dev \
tk-dev \
libmpeg2-4-dev \
libgbm-dev
sudo apt-get install libwebkit2gtk*-dev

 

필수적인 것은 아니지만 파이썬 모듈 라이브러리와의 내부 라이브러리 종속성 혹은 미지원 문제로 인한 파이썬 재설치를 방지하기 위해 아래 명령어를 입력해 추가 설치를 하시는 것을 권장드립니다.

sudo apt-get install python3-*-lib
echo "lib*-dev의 효과는 각각의 파이썬 모듈 라이브러리나 이후 버전의 소스코드의 지원여부에 따라 달라지므로 많이 설치되면 될 수록 좋습니다."
sudo apt-get install lib*-dev

 

 

해당 컴파일러 환경 설정이 완료되셨다면 하위의 명령어를 입력해주시바랍니다.

더보기

사실 여기서부터는 맥 os 또한 사용할 수 있는 공용 명령어이기 때문에 mac환경에서도 충분히 정적/동적 라이브러리와 컴파일러가 설치된경우 따라하셔도 크게 상관이 없습니다.

즉, 기본적인 python실행 외에 파이썬 모듈 라이브러리가 원활히 돌아가게 하기 위해서는 충분히 컴파일러 환경을 설치하시고 실행하셔야 합니다.

chmod +x configure
./configure --enable-optimizations

 

 

이후 해당 폴더에 makefile이 생성되었다면 아래 3가지  make 명령어중 1개를 입력해주시기 바랍니다.

echo "시스템 path(/bin등)에 설치하지 않고 컴파일만 하는 명령어이며 복사 및 심링크등 추가 설정이 필요합니다."
make

echo "컴파일 후 시스템 path(/bin등)에 설치하는 명령어이며 이후 python3등 명령어로 python을 실행하실 수 있습니다."
sudo make install

echo "컴파일 후 시스템 path(/bin등)에 설치하는 명령어이나 설치시 명령실행파일명 변경후 설치되며 이후 python3.8등 버전번호 명령어로 python을 실행하실 수 있습니다."
sudo make altinstall

 

make명령 실행시 굉장한 시간이 소요될 것으로 예상되므로 차분히 기다려 주시면 됩니다. :)