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

在选择可联网环境的机器时,建议选择相同版本的服务器。

主要过程如下:

  1. 在可联网服务器上,下载 Python 源码,及其所需依赖(Yum 开发依赖及 Python 模块依赖)。
  2. 上传至离线服务器上。
  3. 安装,编译 Python.

数据准备

在联网服务器上操作:

  1. 安装 centos-release-scl 第三方yum源

    yum install centos-release-scl
    
  2. 安装 yum 依赖下载插件

    yum install yum-plugin-downloadonly
    
  3. 下载 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
    
  4. 下载 Python 模块依赖

    # 导出使用的依赖
    pip freeze > requirements.txt
    
    # 建议在导出后,将 pip,wheel,setuptools 手动写入到 requirements 文件中。
    
    # 下载, -d 为目标文件夹
    pip download -d python_modules -r ipsla_requirements.txt
    

Python 离线安装

在离线服务器上操作:

  1. 离线安装 Yum 依赖(需 root)

    rpm -Uvh --force --nodeps python_dependencies/*.rpm
    
  2. 启用高版本 GCC(为了在编译时执行 --enable-optimizations, GCC 安装可参见 Gcc 安装

    scl enable devtoolset-9 bash
    gcc -v
    
  3. 解压 Python 源码

    tar -zxf Python-3.8.5.tgz -C /home/user/app/python
    
  4. 配置 make 文件, 指定可执行文件目录:

    configure prefix=/home/user/app/python3 --enable-optimizations

  5. 执行编译:

    make

  6. 执行安装

    make install

  7. 进入到 /home/user/app/python3/bin 目录下,执行 python3 看是否成功

    ./python3 --version

  8. 配置环境变量,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" 找到
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章