统信UOS 离线部署Python3.11完整方案
目标:在能上网的UOS机器把全部依赖deb + Python源码一次性下载到本地文件夹,打包拷贝到内网断网UOS(x86_64/arm64飞腾都适用),内网机器全程不需要联网
核心要点:
- 外网机下载所有deb依赖包,不安装;
- 下载Python3.11源码;
- 打包整个目录,拷贝内网;
- 内网本地apt安装deb包,再编译Python,依然用
altinstall保护系统Python。
一、外网可联网统信UOS机器操作
1. 创建工作目录(所有文件都放这里,最后整个文件夹打包带走)
bash
mkdir -p ~/python311_offline/{debs,src}
cd ~/python311_offline
2. 下载编译Python所需全部依赖deb包(只下载,不安装)
bash
sudo apt update
# 下载所有依赖包到 debs 目录
sudo apt install -y --download-only build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev liblzma-dev tk-dev
# 复制缓存里所有deb到我们本地debs文件夹
sudo cp /var/cache/apt/archives/*.deb ~/python311_offline/debs/
apt下载的deb默认缓存在
/var/cache/apt/archives/,上面命令全部拷贝出来。
3. 下载Python3.11源码包到src目录
bash
cd ~/python311_offline/src
wget [https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz](https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz)
4. (可选,推荐)导出依赖清单,方便校验
bash
cd ~/python311_offline
dpkg -l | grep -E "build-essential|zlib1g-dev|libncurses5-dev|libgdbm-dev|libnss3-dev|libssl-dev|libreadline-dev|libffi-dev|libsqlite3-dev|libbz2-dev|liblzma-dev|tk-dev" > pkg_list.txt
5. 打包整个离线包
bash
cd ~
tar -zcvf python311_offline.tar.gz python311_offline
把 python311_offline.tar.gz U盘拷贝到内网电脑。
二、内网断网统信UOS机器操作
- 把压缩包传到内网机器,解压
bash
tar -zxvf python311_offline.tar.gz
cd ~/python311_offline
- 本地安装所有deb依赖
bash
cd debs
sudo dpkg -i *.deb
# 如果出现依赖缺失报错,执行下面修复
sudo apt -f install
⚠️ 内网机器如果完全断网,
apt -f install无法联网拉包,所以外网下载那一步一定要确保所有依赖完整 ;若内网执行
dpkg -i *.deb报依赖缺少,说明外网下载漏包,外网机重新执行下载命令。
- 解压源码,编译安装
bash
cd ../src
tar -xf Python-3.11.9.tgz
cd Python-3.11.9
./configure --prefix=/usr/local/python3.11 --enable-optimizations --with-ensurepip=install
make -j$(nproc)
sudo make altinstall
- 软链接(可选)
bash
sudo ln -s /usr/local/python3.11/bin/python3.11 /usr/bin/python3.11
sudo ln -s /usr/local/python3.11/bin/pip3.11 /usr/bin/pip3.11
- 验证
bash
python3.11 --version
pip3.11 --version
三、离线额外补充:pip离线安装whl包(如果你后续还要装python库)
如果你还需要
numpy等python包,外网机下载whl放到离线包里:外网机器执行:
bash
mkdir -p ~/python311_offline/whl
python3.11 -m pip download numpy -d ~/python311_offline/whl
内网安装whl:
bash
pip3.11 install --no-index --find-links=./whl numpy
⚠️ 重要提醒(架构匹配!)
外网下载deb的机器CPU架构,必须和内网UOS机器完全一致!
- 内网是飞腾arm64 → 外网必须也是arm64统信UOS去下载deb
- 内网x86_64 → 外网必须x86_64统信UOS
如果架构不一样,deb包无法在内网安装!
四、一键脚本版本(外网一键下载全部包,复制保存为download_py311_offline.sh)
bash
#!/bin/bash
set -e
WORKDIR=~/python311_offline
mkdir -p ${WORKDIR}/{debs,src,whl}
sudo apt update
sudo apt install -y --download-only build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev liblzma-dev tk-dev
sudo cp /var/cache/apt/archives/*.deb ${WORKDIR}/debs/
cd ${WORKDIR}/src
wget [https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz](https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz)
cd ${WORKDIR}
dpkg -l | grep -E "build-essential|zlib1g-dev|libncurses5-dev|libgdbm-dev|libnss3-dev|libssl-dev|libreadline-dev|libffi-dev|libsqlite3-dev|libbz2-dev|liblzma-dev|tk-dev" > pkg_list.txt
cd ~
tar -zcvf python311_offline.tar.gz python311_offline
echo "离线包生成完成: ~/python311_offline.tar.gz"
赋予执行:
bash
chmod +x download_py311_offline.sh
./download_py311_offline.sh
内网安装脚本 install_py311_offline.sh
bash
#!/bin/bash
set -e
cd debs
sudo dpkg -i *.deb
cd ../src
tar -xf Python-3.11.9.tgz
cd Python-3.11.9
./configure --prefix=/usr/local/python3.11 --enable-optimizations --with-ensurepip=install
make -j$(nproc)
sudo make altinstall
sudo ln -s /usr/local/python3.11/bin/python3.11 /usr/bin/python3.11
sudo ln -s /usr/local/python3.11/bin/pip3.11 /usr/bin/pip3.11
echo "Python3.11安装完成"
python3.11 --version