首页 > 解决方案 > 使用 pyenv 在 Ubuntu 14.04 上编译 Python 3.7

问题描述

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

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

标签: opensslubuntu-14.04python-3.7pyenv

解决方案


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

您需要两个步骤,一个是构建您自己的 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。


推荐阅读