Python环境编译构建


和常见的开发环境如 JDK 一样,若需运行服务同样需要安装 Python 运行环境,下面就让我们分别了解在 WindowsLinux 环境下如何安装 Python 环境。

一、Windows

1. 应用安装

Windows 环境下 Python 安装极为简单,进入官网后按需下载对应的版本即可,官网直达

如果上述地址访问较慢,可尝试通过阿里镜像地址进行下载安装。

https://npm.taobao.org/mirrors/python/

下载后具体安装步骤比较简单,无脑下一步即可这里就不过多介绍,完成后默认安装路径在:C:\Users\<username>\AppData\Local\Programs\Python 下。

二、Openssl

1. 环境依赖

Linux 环境下安装 Python 时需注意 3.9 之后的版本不再自带 openssl 依赖库,而 CentOS 7 中默认为 1.0.2 版本过低在高版本 Python 环境下通常无法兼容。

因此,在对于 3.9 以上版本需要手动升级安装 Openssl 依赖,按下述步骤执行。

# 下载依赖包
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz

# 解压依赖包
tar -zxvf openssl-1.1.1.tar.gz
cd openssl-1.1.1

解压完成后对服务包进行编译构建,需注意编译涉及 gcc 工具,若无可通过 yum 进行下载。

# 依赖下载
yum install -y gcc

# 编译构建
./config --prefix=/usr/local/openssl
make & make install

完成上述命令后便会生成 /usr/local/openssl 目录,通过下述命令查看版本:

/usr/local/openssl/bin/openssl version

2. 服务验证

若显示 1.1.1 则说明编译安装成功,若提示 error while loading shared libraries xxx 则执行下述命令:

即通过 export 命令将 openssl 目录写入 LD_LIBRARY_PATH 环境变量。

# 添加临时变量
export LD_LIBRARY_PATH=/usr/local/openssl/lib:$LD_LIBRARY_PATH

上述操作仅添加临时变量,系统重启后将会失败,若需永久生效则需通过下述命令写入配置。

# 写入系统配置
echo "/usr/local/openssl/lib" > /etc/ld.so.conf.d/openssl-3.conf
ldconfig

完成后可再次执行 version 命令验证是否安装成功。

# 查看版本
/usr/local/openssl/bin/openssl version

3. 软链创建

系统默认 openssl 服务目录位于 /usr/local/bin/openssl,为了更方便使用无需每次指定完成路径可为新安装服务创建软链关联。

若只需临时生效,则同样可通过添加临时变量方式实现,命令如下:

export PATH=/usr/local/bin:$PATH

ln -s /usr/local/openssl/bin/openssl /usr/local/bin/openssl

若需永久生效即重启系统后仍能生效则可写入配置文件。

echo 'export PATH=/usr/local/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

三、GCC环境

1. YUM升级

在高版本环境中安装第三方类库时常需要 GCC 依赖,而 CentOS 7 中默认版本为 4.8.5,但第三方库编译通常要求 9+ 版本。

因此,除 Openssl 升级之外还需要升级 GCC 版本,版本升级则可通过 YUM 命令进行升级。

但在 CentOS 7.9 版本之后默认已经停更下载镜像,因此在需要手动更换镜像地址。

进入 /etc/yum.repos.d/ 目录分别修改 CentOS-SCLo-scl.repoCentOS-SCLo-scl-rh.repo 文件。

cd /etc/yum.repos.d/

vi CentOS-SCLo-scl.repo
vi CentOS-SCLo-scl-rh.repo

依次编辑两份文件内容,注释 mirrorlist 内容,将 baseurl 取消注释并替换为阿里云镜像地址,两个文件按照同样步骤执行。

baseurl=https://mirrors.aliyun.com/centos/7/sclo/$basearch/sclo/
#mirrorlist=https://mirrorlist.centos.org?arch=$basearch&release=7&repo=sclo-sclo

2. GCC升级

在替换 YUM 镜像服务后便可升级 GCC 版本,执行下述命令升级。

# 依赖下载
yum install -y centos-release-scl
yum install -y devtoolset-11

# 激活 GCC 11
scl enable devtoolset-11 bash

安装成功后可通过 version 参数查看版本信息:

gcc --version

同样的,如果需要永久生效则通过下述命令写入系统文件:

echo "source /opt/rh/devtoolset-11/enable" >> ~/.bashrc
source ~/.bashrc

四、Linux环境

1. 服务编译

至此则可开始具体的 Python 编译,在具体编译开始前安装相关所需的依赖工具,命令如下:

yum groupinstall -y "Development tools"
yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install -y libffi-devel 

Windows 一样从官网下载二进制文件编译安装,完成后同上在官网中选择所需版本文件,上传至服务器后解压,按照下述步骤执行命名。

其中 --prefix 为文件目录输出路径,--openssldir 则为指定系统中已安装的 openssl 服务目录。

# 创建安装目录
mkdir /usr/local/python3
cd Python-3.11.0

# 服务配置
./configure \
    --prefix=/usr/local/python311 \
    --with-openssl=/usr/local/openssl \
    --with-openssl-rpath=auto \
    --enable-optimizations

# 服务编译
make && make install

编译结束后便会在 /usr/local/python3 生成目录,创建软链接后即可。

ln -s /usr/local/python311/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python311/bin/pip3 /usr/local/bin/pip3

完成软链后便可通过 python3 命令验证版本查看是否安装成功。

python3 -v

通过下述命令可查看 Python 所使用 openssl 版本,若为 1.1.1 则表示成功。

/usr/local/python311/bin/python3.11 -c "import _ssl; print(_ssl.OPENSSL_VERSION)"

文章作者: 烽火戏诸诸诸侯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 烽火戏诸诸诸侯 !
  目录