Python
[Python3.11] ssl module in Python is not available 해결
비전공자 기록광
2024. 4. 26. 17:49
반응형
요근래 업무로 사내 API 서버를 개발했다.
이번에는 스프링부트가 아닌 FastAPI로 개발했는데 배포에서 큰 애를 먹어 오랜만에 블로깅해둔다.
사실 진짜 별거 아니고 애먹을 일도 아닌데.. 네트워크 공부 다시해야겠음
일단 내 프로젝트는 파이썬 3.11 버전으로 개발되었고
배포해야할 서버는 2.7.5 로 그냥 리눅스 CentOS7에서 기본으로 설치되어 있는 버전이었다.
나는 asyncio 와 httpx를 사용해서 일단 파이썬 3.10 이상을 무조건 설치해야했고,
전에 혼자 공부한대로 가상환경을 띄워서 pyenv 를 설치했는데 자꾸만 pip install fastapi 가 안됐다.
pip 자체가 문제가 되었던 것인데.. OpenSSL이 없다는 에러만 발생하고 자꾸만 재설치를 하라고 했다.
[오류 메세지]
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
그런데 이해가 안하는 건 이미 openssl이 설치되어 있다는 것
설치한 파이썬버전에서 찾아봤더니 오류가 확인되었다.
# 이거를 했더니
python3.11 -c 'import ssl'
# 이게 나옴
No module named '_ssl'
분명 python3.11 version을 하면 3.11에 대한 정보도 잘 뜨고 openssl 도 설치되어 있는데 뭐가 문제지? 하고
찾아보니 Pytho3.10 이상부터는 OpenSSL1.1.1 이 필요하다고 했다. 이런~
https://peps.python.org/pep-0644/
# openssl
cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1t.tar.gz
tar xvf openssl-1.1.1t.tar.gz
cd openssl-1.1.1t/
./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
make
sudo make install
# 파이썬 재설치
cd /usr/src
wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
sudo tar xzf Python-3.11.0.tgz
cd Python-3.11.0
export LDFLAGS="-L/usr/local/ssl/lib"
export CPPFLAGS="-I/usr/local/ssl/include"
# openssl확인
/usr/local/ssl/bin/openssl version
export LD_LIBRARY_PATH=/usr/local/ssl/lib:$LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH
# --with-openssl-rpath=auto 옵션을 추가하여 파이썬이 자동으로 올바른 OpenSSL 라이브러리 경로를 찾도록 함
./configure --with-openssl=/usr/local/ssl --with-openssl-rpath=auto
make
sudo make altinstall
# pip
pip3.11 --version
pip3.11 install --upgrade pip
--with-openssl-rpath=auto 안해줘서 두번 다시함
나중에 혹시나 모르니 블로깅해두기..
끝!
참고
반응형