【引言】
在企业生产环境中,内网服务器因保证业务的运行安全,需要与公网进行完全隔离。并且,有些业务系统对Python版本要求比较苛刻,通过镜像源yum安装,只能安装低版本的Python环境。因此,在内网环境下,运维人员只能通过源码安装这一个途径来完成部署。
然而,源码编译安装过程中,必然会涉及到处理底层依赖、GCC编译、环境变量等问题,成为许多运维人员和开发工程师的痛点难题。
针对上述痛点问题,本文将详细介绍Linux内网环境下Python编译安装与pip 包离线部署实战,让大家从零开始完成Python环境的部署,更好地运行开发完成的项目软件。
【各版本Python下载地址】
Python各个安装版本地址:https://www.python.org/ftp/python/,可按需下载对应的版本。
【部署流程】
一、安装python所需环境所需的全部依赖
yum install -y gcc openssl-devel bzip2-devel libffi-devel zlib-devel wget make xz
①gcc:GNU 编译器集合,核心是将 Python的C语言源码“翻译”成 Linux 能执行的机器指令。没有 GCC编译器,执行./configure命令生成的Makefile无法执行,make编译步骤直接报错,Python源码成为“一堆无法运行的文本“。
②make:自动化编译工具,将python编译成C语言源码
③openssl-devel:提供 SSL/TLS 加密相关的开发文件,用于网络程序的请求。
④bzip2-devel:提供 bzip2 数据压缩格式的开发文件。
⑤zlib-devel:提供 zlib 数据压缩格式的开发文件(最常用的压缩格式,.zip 文件基础)。Python 标准库中的 zlib 模块依赖它。
⑥libffi-devel:提供 Foreign Function Interface(外部函数接口)的开发文件,允许 Python 调用 C 语言编写的扩展库。
二、通过finalshell或者winscp等软件,将python安装包传到系统里面。在系统里面对压缩包进行解压,执行命令:
三、进入到解压后的文件夹里面,本文是Python-3.11.10。执行configure命令,对Python依赖的系统环境进行检查,并且编译生成对应的makefile文件。具体命令如下:
./configure --prefix=/usr/local/python3.11 --enable-optimizations #其中,--prefix指定安装目录,--enable-optimizations开启python性能优化
四、生成对应makefile文件后,就需要编译和安装python,执行如下命令:
make -j16 #本文虚机配置为16核,表示使用16核CPU进行编译。用户按照自己虚机CPU配置进行对应数值修改。make altinstall #这里千万别执行make install,这个命令会覆盖系统自带的Python,而使用本文的命令:make altinstall
五、在这个时候,已经安装完成Python。这时直接执行python命令,还是调用的系统本身python,而非刚安装上的这个版本。我们进入到python安装目录:/usr/local/python3.11/bin,执行ls -l就会看到python和pip的可执行文件:
六、执行这2个可执行文件,查看下安装后的版本:
七、建立软连接,将这2个可执行文件链接到系统默认shell,这样就可以在任意目录中,执行python3和pip3命令。
ln -s /usr/local/python3.11/bin/python3.11 /usr/bin/python3ln -s /usr/local/python3.11/bin/pip3.11 /usr/bin/pip3
八、此时,我们就可以在任意路径下执行python3和pip3命令,均可以正确指向安装完成的python3.11版本。
九、我们还可以在/etc/profile配置文件中,将安装的python3.11环境变量export出来,这样所有用户都可以执行python3.11和pip3.11。具体命令如下:
export PATH=/usr/local/python3.11/bin:$PATHsource /etc/profile #生效配置
十、此时,可以在任意路径下,正常执行python3和python3.11,并且2个命令均指向新安装的python。
十一、目前内网Python安装完毕后,pip3 list只能看到自带的pip包,而软件开发需要大量其它pip包。在内网无法直接执行命令pip3 installXXX包,因此需要我们将安装包从公网上导入到内网,然后安装。具体流程如下:
①要保证内网机器操作系统版本与可以连接公网机器的操作系统版本一致,这样导出的pip安装包不存在兼容性问题。在可以连接公网机器上执行命令:
pip download -r requests.txt -d pkgs/ -i https://pypi.tuna.tsinghua.edu.cn/simple/ #将requests.txt所有pip包下载到pkgs文件夹下,使用的pip源为清华源。
②将下载后的pkgs进行压缩,与requests.txt一块导入到内网服务器上。在内网服务器解压pkgs压缩包,要保证解压后的pkgs文件夹与requests.txt在同一级目录。此时,执行安装命令,即可正常安装pip包。
pip3 install --no-index --find=pkgs -r requests.txt
十二、恭喜您已在内网正常安装Python和pip包
评论区有文章总结,欢迎大家讨论!觉得好可以关注、点赞、推荐、转发,谢谢!