Python 3.8 离线安装 - Centos 7
由于客户环境断网且提供非 Root 权限用户,只能从头开始采用源码方式进行安装。而源码方式自然免不了对各种开发工具的依赖,好在对于 Yum 来说,提供一个了插件可以需要的依赖全部下载下来,在离线机器直接采用离线方式即可,免去了手动调整各种依赖的麻烦。
对于 Python 需要的依赖的包来说,本身 pip 也提供了类似 Yum 离线下载的工具,需要直接导入即可。
Linux 服务器发行版为:Centos7.6
内核版本为:Linux 3.10.0-957.el7.x86_64
Python:3.8.5
在选择可联网环境的机器时,建议选择相同版本的服务器。
主要过程如下:
- 在可联网服务器上,下载 Python 源码,及其所需依赖(Yum 开发依赖及 Python 模块依赖)。
- 上传至离线服务器上。
- 安装,编译 Python.
数据准备
在联网服务器上操作:
-
安装
centos-release-scl
第三方yum源yum install centos-release-scl
-
安装 yum 依赖下载插件
yum install yum-plugin-downloadonly
-
下载 Python 及 Yum 依赖
# 下载 python 源码 wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz # 下载依赖, python_dependencies 为保存的目标文件夹 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel --downloadonly --downloaddir=python_dependencies
-
下载 Python 模块依赖
# 导出使用的依赖 pip freeze > requirements.txt # 建议在导出后,将 pip,wheel,setuptools 手动写入到 requirements 文件中。 # 下载, -d 为目标文件夹 pip download -d python_modules -r ipsla_requirements.txt
Python 离线安装
在离线服务器上操作:
-
离线安装 Yum 依赖(需 root)
rpm -Uvh --force --nodeps python_dependencies/*.rpm
-
启用高版本 GCC(为了在编译时执行
--enable-optimizations
, GCC 安装可参见 Gcc 安装)scl enable devtoolset-9 bash gcc -v
-
解压 Python 源码
tar -zxf Python-3.8.5.tgz -C /home/user/app/python
-
配置 make 文件, 指定可执行文件目录:
configure prefix=/home/user/app/python3 --enable-optimizations
-
执行编译:
make
-
执行安装
make install
-
进入到 /home/user/app/python3/bin 目录下,执行 python3 看是否成功
./python3 --version
-
配置环境变量,source 后生效:
vim ~/.bash_profile export PYTHON3_PATH=/home/ipsla/app/python3 export PATH=$PYTHON3_PATH/bin:$PATH
Python 依赖模块安装
由于离线 Python3.8 自带的 pip 等版本可能与联网服务器模块版本不一致,为了规避依赖版本问题,先对其版本进行更新:
ipsla_packages 为下载后的 Python 模块依赖目录。
/home/ipsla/user/python3/bin/pip3.8 --upgrade ipsla_packages/pip-20.2.3-py2.py3-none-any.whl
/home/ipsla/user/python3/bin/pip3.8 --upgrade ipsla_packages/wheel-0.35.1-py2.py3-none-any.whl
/home/ipsla/user/python3/bin/pip3.8 --upgrade ipsla_packages/setuptools-50.3.0-py3-none-any.whl
安装需要的依赖:
# 根据 requirements 文件安装
/home/user/app/python3/bin/pip3.8 install --no-index --find-links=ipsla_packages -r ipsla_packages/requirements.txt
# 手动指定安装
/home/user/app/python3/bin/pip3.8 install --no-index --find-links=ipsla_packages/ aiohttp==3.5.4
通常都会搭配 MySQL 等数据库,如果数据库也是离线安装的话,需要调整一下链接文件:
ln -s /home/user/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
# libmysqlclient 可通过 find /home/user -name "libmysqlclient" 找到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了