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.pswp.cn/news/918746.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918746.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918746.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ESP32 I2S音频总线学习笔记(六):DIY蓝牙音箱教程

往期相关文章&#xff1a; ESP32 I2S音频总线学习笔记&#xff08;一&#xff09;&#xff1a;初识I2S通信与配置基础 ESP32 I2S音频总线学习笔记&#xff08;二&#xff09;&#xff1a;I2S读取INMP441音频数据 ESP32 I2S音频总线学习笔记&#xff08;三&#xff09;&#…

springboot博客实战笔记02

一、评论功能&#xff1a; 注意要先登录之后才能进行评论&#xff0c;所有把评论加入到登录拦截器当中 Overridepublic void addInterceptors(InterceptorRegistry registry) {//拦截test接口&#xff0c;后续实际遇到需要拦截的接口时&#xff0c;在配置为真正的拦截接口regis…

ThinkPHP+Mysql 灵活用工小程序-技术深度解析与实践指南

一、模块设计分包商&#xff1a;税地注册公司&#xff0c;用于在当地申请有利的税收政策&#xff0c;是实际报税公司。 代理商&#xff1a;代理商可以邀请客户使用本平台&#xff0c;平台会给予代理商一定的服务费差价作为佣金。 客户&#xff1a;使用本平台进行工资发放的…

开源数据发现平台:Amundsen 第1部分:基础入门与本地环境设置

Amundsen 是一个数据发现和元数据引擎&#xff0c;旨在提高数据分析师、数据科学家和工程师与数据交互时的生产力。目前&#xff0c;它通过索引数据资源&#xff08;表格、仪表板、数据流等&#xff09;并基于使用模式&#xff08;例如&#xff0c;查询频率高的表格会优先于查询…

Linux编程--进程

1、基本概念&#xff1a;进程&#xff1a;是程序动态执行的过程&#xff0c;包括创建、调度、消亡程序&#xff1a;存放在外存中一段数据的集合虚拟地址&#xff1a;进程使用的逻辑地址&#xff0c;有操作系统管理&#xff0c;不直接对应物理内存物理地址&#xff1a;实际内存的…

【开源工具】基于硬件指纹的“一机一码”软件授权系统全实现(附完整源码)

🚨 紧急预警!你的软件正在被白嫖?这套Python软件加密授权方案让破解者当场崩溃 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热情源自每一个灵感闪现的夜晚。愿以开源之火,点亮前行之路。 🐋 希望大家多多支持…

机器学习算法篇(八)-------svm支持向量机

目录 ​​1. SVM 的核心原理&#xff08;必须掌握&#xff09;​​ ​​2. Python 中的实践重点​​ ​​(1) Scikit-learn 的 SVM 实现​​ ​​(2) 数据预处理​​ ​​(3) 模型评估与调优​​ ​​3. 学习侧重点优先级​​ ​​4. 经典案例实践方向​​ ​​5. 学习…

发票查验接口接收参数说明-PHP语言集成-财务管理

发票验真服务接口可实时联网核验发票真伪&#xff0c;查验一致时返回全票面信息。其支持核验增值税发票管理系统开具发票的真伪&#xff0c;且能进行发票批量查验&#xff0c;当日开具的发票当日即可查验。同时&#xff0c;结合发票识别接口可实现自动识别发票信息核验&#xf…

Uniapp物联网平台登录与温湿度监测系统

下面是一个完整的Uniapp物联网平台实现&#xff0c;包含登录功能和温湿度监测系统。这个解决方案采用现代化UI设计&#xff0c;模拟了物联网平台的核心功能。文章末尾提供源码下载。 系统功能说明 这个Uniapp物联网平台登录与温湿度监测系统包含以下核心功能&#xff1a; 1.…

【企业架构】TOGAF概念之四(终结)

导读&#xff1a;学习TOGAF&#xff08;The Open Group Architecture Framework&#xff0c;开放组架构框架&#xff09;相关概念的意义和价值&#xff0c;体现在它为企业架构&#xff08;Enterprise Architecture, EA&#xff09;实践提供了标准化方法论、跨领域协同框架、战略…

centos 怎么部署 vscode 网页版

安装编译工具 下载适用于 linux 版本的 rpm 格式文件 下載 Visual Studio Tools - 免費安裝 Windows、Mac、Linux 拷贝路径&#xff0c;下载文件 wget https://vscode.download.prss.microsoft.com/dbazure/download/stable/e3550cfac4b63ca4eafca7b601f0d2885817fd1f/code…

sql的关键字 limit 和offset

核心概念LIMIT (限制): 指定查询最多返回多少行记录。OFFSET (偏移): 指定在开始返回记录之前要跳过多少行记录。它定义了结果集的起始点。核心前提&#xff1a; 必须 使用 ORDER BY 子句来确保分页结果的顺序稳定和可预测。示例&#xff1a; 假设 employees 表有 100 条记录&a…

git config的配置全局或局部仓库的参数: local, global, system

git config的范围参数: local, global, system1. --local: 作用于当前仓库2. --global: 作用于当前用户的全局范围的 Git 仓库3. --system: 作用于系统范围内的 Git 仓库4. 注意事项参考链接1. --local: 作用于当前仓库 --local: 这个参数的作用范围是当前仓库。其配置的参数保…

应用系统连达梦数据库报“服务器模式不匹配”的根源与修复方案

近期遇到很多个应用系统连接达梦数据库报“服务器模式不匹配”的问题&#xff0c;省流直接说文章结论通常两种场景 初次连接达梦数据库时报服务器模式不匹配&#xff0c;可能是配置文件中LOGIN_MODE参数配置与数据库状态不一致导致连接失败应用系统正常运行负载大或者偶发报服务…

git:分支

分支命名可以使用斜杠(/)构建分层命名方案不能以减号(-)开头&#xff0c;分层的命名不能以点(.)开头不能使用连接两个点(.)不能包括空格或其他空白字符以及~ ^ : ? * [列出分支名称 git branch 列出本地版本库的分支git branch -r 列出远程跟踪分支git branch -a …

T05_卷积神经网络

全连接网络存的弊端 以MINST数字识别为例&#xff0c;创建一个4层全连接网络层&#xff0c;输入为28x28&#xff0c;中间三个隐藏层的节点数都是 256&#xff0c;输出节点数是10。通过summary()函数打印出模型每一层的参数量&#xff0c;计算总的参数量超过34万个网络参数&…

区块链在可信空间智能合约中的应用

区块链在可信数据空间的智能合约应用,通过去中心化信任机制、自动化执行、可验证计算等特性,正在重塑数据存储、共享、交易和治理的模式。以下是其核心应用方向、关键技术及落地案例的深度解析: 一、核心应用方向 1. 数据确权与授权管理 应用场景 个人数据主权:用户通过智…

pycharm配置python解释器教程

一个解释器对应一个环境&#xff0c;无论是conda环境或是Python环境。python环境的解释器的路径形如"D:\Python3.12\python.exe"&#xff0c;conda环境的解释器的路径形如"D:\anaconda3\envs\opencv\python.exe"。 如何在Pycharm中设置解释器 打开pycharm&…

C#教程之NPOI读写excel文件XLS,XLSX格式

NPOI 是开源的 POI 项目的.NET版&#xff0c;可以用来读写Excel&#xff0c;Word&#xff0c;PPT文件。仅需处理 XLS/XLSX 格式的文本和数字读写&#xff0c;最少需要加载 2 个核心 DLL&#xff1a;NPOI.dll包含所有格式的通用接口&#xff08;IWorkbook、ISheet、IRow、ICell …

Perforce P4 Git 连接器

Perforce P4 Git连接器将Git代码库与数字资产集中存储于Perforce P4&#xff08;前身为Helix Core&#xff09;&#xff0c;为所有数字资产&#xff08;源码二进制文件&#xff09;构建单一事实来源。 突破代码库与文件限制 当艺术家、开发者及工程师组成的大型团队仅使用Git时…