[Python] 在 Ubuntu/CentOS 上編譯支援 ctypes 與 ssl 的 Python 3.9
今天想建立一個基於 Ubuntu 16.04 的 Docker 映象檔,
並且在裡面安裝 Python 3.9,
想說就從 Python 原始碼來編譯:
wget https://www.python.org/ftp/python/3.9.2/Python-3.9.2.tgz tar xvf Python-3.9.2.tgz cd Python-* ./configure --enable-optimizations make -j2 make install
結果在 make 的最後階段,出現了無法編譯 ctypes 和 ssl 模組的訊息:
Python build finished successfully! ...... Failed to build these modules: _ctypes Could not build the ssl module! Python requires an OpenSSL 1.0.2 or 1.1 compatible libssl with X509_VERIFY_PARAM_set1_host(). LibreSSL 2.6.4 and earlier do not provide the necessary APIs, https://github.com/libressl-portable/portable/issues/381
這樣的 Python 3 會無法使用 ctypes,
還會因為缺少 ssl,導致 pip3 無法建立 HTTPS 連線來下載新的 Python 模組…
查了一下,在 Ubuntu 上要:
- 安裝 libffi-dev 來編譯 ctypes 模組
- 安裝 libssl-dev 來編譯 ssl 模組
sudo apt install libffi-dev libssl-dev
這樣子編譯出來的 Python 3 就可以使用 ctypes 與 ssl 模組了:
root@22ae96119706:/Python-3.9.2# python3 Python 3.9.2 (default, Feb 24 2021, 16:23:22) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import ctypes >>> import ssl >>>
備註:如果是在 CentOS 系列,改為安裝 libffi-devel 與 openssl-devel 即可。
參考資料:
如何在Ubuntu上安裝OpenSSL庫? – Ubuntu問答
Failed to build these modules: _ctypes – Python tracker
(本頁面已被瀏覽過 666 次)