Ubuntu 22.04 离线环境下 Python 包与 FFmpeg 安装全攻略

发布于:2025-08-13 ⋅ 阅读:(16) ⋅ 点赞:(0)

Ubuntu 22.04 离线环境下 Python 包与 FFmpeg 安装全攻略
在没有网络连接的 Ubuntu 22.04 环境中安装软件包常常会遇到各种依赖问题,尤其是 Python 库和 FFmpeg 这类依赖复杂的工具。
本文将详细介绍如何在离线环境中安装指定的 Python 包(包括 OpenCV、PyTorch 等)和 FFmpeg,并解决常见的依赖冲突问题。

离线安装 Python 包全流程

准备工作:在有网络的机器上下载包

首先需要在有网络的 Ubuntu 机器上(建议与目标机器系统版本和架构一致)下载所需的 Python 包及其依赖。
创建下载脚本download_packages.sh:

#!/bin/bash

# 创建存放包的目录
mkdir -p python_packages
cd python_packages

# 下载普通Python包
pip download -i https://pypi.tuna.tsinghua.edu.cn/simple \
    opencv-python \
    requests \
    pillow \
    pyyaml \
    numpy==1.26.4

# 下载PyTorch相关包
pip download --no-cache-dir torch torchvision torchaudio \
    --index-url https://download.pytorch.org/whl/cu121

echo "所有包已下载到 python_packages 目录"

运行脚本下载包:

chmod +x download_packages.sh
./download_packages.sh

处理依赖冲突问题

在离线安装过程中,最常见的问题是依赖冲突。当出现类似以下错误时:

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
tables 3.8.0 requires blosc2~=2.0.0, which is not installed.
tables 3.8.0 requires cython>=0.29.21, which is not installed.
gensim 4.3.0 requires FuzzyTM>=0.4.0, which is not installed.
numba 0.57.1 requires numpy<1.25,>=1.21, but you have numpy 1.26.4 which is incompatible.

我们需要补充下载缺失的依赖包并按正确顺序安装:
创建补充下载脚本download_missing_deps.sh:

#!/bin/bash

# 进入之前的包目录
cd python_packages

# 补充下载缺失的依赖
pip download -i https://pypi.tuna.tsinghua.edu.cn/simple \
    blosc2~=2.0.0 \
    cython>=0.29.21 \
    FuzzyTM>=0.4.0 \
    numba>=0.58.0  # 升级numba到兼容numpy 1.26.4的版本

离线安装脚本
将下载好的python_packages目录传输到离线机器后,创建安装脚本install_packages.sh:

#!/bin/bash

# 进入包目录
cd python_packages

# 1. 先安装缺失的基础依赖
pip install --no-index --find-links=. \
    blosc2~=2.0.0 \
    cython>=0.29.21 \
    FuzzyTM>=0.4.0

# 2. 升级numba到兼容numpy 1.26.4的版本(解决核心冲突)
pip install --no-index --find-links=. numba>=0.58.0 --upgrade

# 3. 安装原本需要的包
pip install --no-index --find-links=. \
    opencv-python \
    requests \
    pillow \
    pyyaml \
    numpy==1.26.4 \
    torch torchvision torchaudio

echo "所有包安装完成(已处理依赖冲突)"

运行安装脚本:

chmod +x install_packages.sh
./install_packages.sh

处理版本冲突的特殊情况

当遇到类似pyfume 0.3.4 requires numpy==1.24.4这样的版本冲突时,有两种解决方案:

1. 升级冲突包(优先选择):

# 在有网络机器上下载兼容版本
pip download -i https://pypi.tuna.tsinghua.edu.cn/simple pyfume>=0.3.5

# 在离线机器上安装
pip install --no-index --find-links=. pyfume>=0.3.5 --upgrade

2. 降低依赖包版本(备选方案):

# 在离线机器上强制安装兼容版本
pip install --no-index --find-links=. numpy==1.24.4 --force-reinstall

离线安装 FFmpeg 的完整方案

下载 FFmpeg 及依赖包

在有网络的机器上创建下载脚本download_ffmpeg_fixed.sh:

#!/bin/bash

# 创建存放deb包的目录
mkdir -p ffmpeg_debs
cd ffmpeg_debs

# 安装必要工具
sudo apt-get update
sudo apt-get install -y apt-rdepends

# 下载ffmpeg及依赖包(直接列出所有需要的包)
apt-get download $(apt-rdepends \
    ffmpeg \
    libblas3 \
    libjack-jackd2-0 \
    liblapack3 \
    ocl-icd-libopencl1 \
    debconf \
    | grep -v "^ " | sort -u | grep -v "^$")

echo "ffmpeg及依赖包已下载到ffmpeg_debs目录"

运行脚本:

chmod +x download_ffmpeg_fixed.sh
bash download_ffmpeg_fixed.sh  # 明确使用bash执行

解决虚拟包依赖问题

如果遇到类似Can’t select candidate version from package libblas.so.3的错误,是因为这些是虚拟包,需要使用实际提供这些功能的包:

虚拟包 实际提供者
libblas.so.3 libblas3
libjack-0.125 libjack-jackd2-0
liblapack.so.3 liblapack3
libopencl-1.2-1 和 libopencl1 ocl-icd-libopencl1
debconf-2.0 debconf

离线安装 FFmpeg

将ffmpeg_debs目录传输到离线机器后,执行以下命令安装:

cd ffmpeg_debs
sudo dpkg -i *.deb

# 修复可能的依赖问题
sudo apt-get -f install

安装完成后验证:

ffmpeg -version

如果显示版本信息,则表示安装成功。

总结与注意事项

环境一致性: 确保下载包的机器与离线机器具有相同的操作系统版本和架构;
依赖处理: 离线安装的核心是完整获取所有依赖,包括直接依赖和间接依赖;
安装顺序: 先解决依赖冲突,再安装主要包,可减少很多问题;
虚拟包处理: 对于系统包,要识别虚拟包并使用实际提供者;
版本兼容: 注意 Python 库之间的版本兼容性,尤其是 numpy 等基础库;

通过以上方法,你可以在完全离线的 Ubuntu 22.04 环境中成功安装所需的 Python 包和 FFmpeg 工具。
如果遇到其他依赖问题,可按照类似思路查找缺失的依赖并补充下载。


网站公告

今日签到

点亮在社区的每一天
去签到