使用 pyenv 在 Ubuntu 14.04 上编译 Python 3.7

Dan*_*erg 1 openssl ubuntu-14.04 pyenv python-3.7

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

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

Dan*_*erg 5

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

您需要两个步骤,一个是构建您自己的 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
Run Code Online (Sandbox Code Playgroud)

这会将 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。