Unix/Ubuntu

Python 3.13 컴파일로 설치

ForceCore 2025. 1. 17. 13:29

컴파일 하는 이유: miniconda로 3.13 버전이 없어서 / 회사 라이센스 문제로 / pyenv도 안 되어서

우분투가 너무 낡은 버전이면 pyenv도 안 먹힌다.

 

dependency를 잘 갖추고 컴파일 해야 libssl이 없어서 httpx등 https를 쓰는 모듈들이 작동을 잘 안 한다든지 하는 문제가 없다. 오래된 우분투를 운영하는 것 자체가 고통이다.

 

https://devguide.python.org/getting-started/setup-building/index.html#deps-on-linux

Dependency는 dev guide를 읽으면 나온다. 다행히도 노가다하면서 하나씩 알아낼 필요가 없다.

이후는 여타 컴파일로 설치하는 프로그램들과 동일하... 지 않다.

 

우분투가 오래된 버전이면 openssl 1.1.1 미만일 것임. 그러면

Could not build the ssl module!
Could not build the ssl module! Python requires a OpenSSL 1.1.1 or newer

이렇게 나오면서 빌드가 중단됨.

 

openssl 소스코드를 받고 configure, make, make install ㄱㄱ (여기선 1.1.1w, openssl 3.x.x로 시도해봤는데 API가 맞지 않아서 잘 안 된다.)

~/usr/src/openssl-1.1.1w $
./config --prefix=/opt/openssl-1.1.1w
make
sudo make install

이렇게 설치한다.

 

[ERROR] _hashlib failed to import: libcrypto.so.1.1: cannot open shared object file: No such file or directory
[ERROR] _ssl failed to import: libssl.so.1.1: cannot open shared object file: No such file or directory
Following modules built successfully but were removed because they could not be imported:
_hashlib                  _ssl

 

이런 메시지를 안 보려면...

 

./configure \
   --prefix=/opt/python-3.13.1 \
   --enable-optimizations \
   --enable-shared \
   --with-openssl=/opt/openssl-1.1.1w \
   --with-openssl-rpath=/opt/openssl-1.1.1w/lib
make
sudo make install

configure만 적절히 되면 어렵지않게 make 되고 install될 것이다.