当前位置: 首页 > news >正文

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

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/cu121echo "所有包已下载到 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 torchaudioecho "所有包安装完成(已处理依赖冲突)"

运行安装脚本:

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.3libblas3
libjack-0.125libjack-jackd2-0
liblapack.so.3liblapack3
libopencl-1.2-1 和 libopencl1ocl-icd-libopencl1
debconf-2.0debconf

离线安装 FFmpeg

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

cd ffmpeg_debs
sudo dpkg -i *.deb# 修复可能的依赖问题
sudo apt-get -f install

安装完成后验证:

ffmpeg -version

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

总结与注意事项

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

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

http://www.dtcms.com/a/326513.html

相关文章:

  • 嵌入式Linnux学习 -- 软件编程2
  • linux下部署 dify,并配置本地ollama大模型
  • 【排序算法】⑤冒泡排序
  • Java学习 -- 可变参数与Collections工具类
  • docker安装Engine stopped
  • AI自动生成接口测试脚本全流程
  • 当AI重塑世界:普通人如何成为“主动进化者”?
  • 在 .NET Core 5.0 中启用 Gzip 压缩 Response
  • ECCV 2024 论文解读丨具身智能、机器人研究最新突破创先点分享合集
  • MCU中的存储器映射(Memory Map)
  • 登录系统英文使用 Sign In?Log In?还是 Log On?
  • Windows Server 2022域控制器部署与DNS集成方案
  • 大模型工程问题
  • Python网络爬虫(一) - 爬取静态网页
  • 打烊:餐厅开业前的“压力测试”
  • nginx 设置二级目录-实战
  • P1967 [NOIP 2013 提高组] 货车运输【题解】
  • 当智慧在腕间流转:一场无声的协同交响
  • haproxy 2.4.x, /metrics 取数据遇到的问题
  • 项目代码涉及的知识点笔记整理
  • C++高频知识点(二十一)
  • 嵌入式学习 day48 IMX6ULL裸机驱动 -按键、中断
  • 源码分析Eino框架工具调用--创建篇
  • Redis RDB和AOF 流程、优缺点详细介绍
  • python每日一题练习 有效的字母异位词 非常简单
  • Linux软件编程--IO
  • Linux 软件编程:IO——标准IO
  • 《录井管理与工程》书籍第一章要点及相应思考
  • 工业数采引擎-通信协议(Modbus/DTU/自定义协议)
  • FFmepg源码系列-avformat_open_input()