使用 pyenv 在 Ubuntu 14.04 上编译 Python 3.7

Compiling Python 3.7 on Ubuntu 14.04 with pyenv

在 Ubuntu 14.04 上编译 Python 3.7 及更高版本无法开箱即用。 这是因为 Ubuntu 14.04 以 OpenSSL 1.0.1 为基线,而 Python 3.7 需要 OpenSSL 1.0.2 及更高版本。

不涉及第 3 方 PPA 的最佳解决方案是什么?

我没有看到一个明确的解决方案,所以我决定写一个关于从源代码编译而不影响系统其余部分的解决方案。

您需要两个步骤,第一步是构建您自己的 OpenSSL 版本,第二步是指示 pyenv 使用它。

要安装 OpenSSL,运行 以下命令。

mkdir openssl 
cd openssl 
wget https://www.openssl.org/source/openssl-1.0.2u.tar.gz 
tar -xzvf openssl-1.0.2u.tar.gz 
cd openssl-1.0.2u 
./config --prefix=$HOME/openssl --openssldir=$HOME/openssl shared zlib 
make 
make install

这会将最新版本的 OpenSSL 1.0.2(不会发布更多补丁)安装到您的主目录。现在使用 pyenv 安装 Python 3.7。

配置好pyenv后,运行下面的命令

PATH="$HOME/openssl:$PATH" CPPFLAGS="-I$HOME/openssl/include" CFLAGS="-I$HOME/openssl/include/" LDFLAGS="-L$HOME/openssl/lib -Wl,-rpath,$HOME/openssl/lib" LD_LIBRARY_PATH=$HOME/openssl/lib:$LD_LIBRARY_PATH LD_RUN_PATH="$HOME/openssl/lib" CONFIGURE_OPTS="--with-openssl=$HOME/openssl" PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.7.5

如果你想要更快 运行 次,你可以添加 -O2。