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