You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下Python可导入库,但pip无法获取离线适配版本

版本信息
lsb_release -a
Ubuntu: 20.04.5

Python3 --version
Python 3.8.10

pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
代码情况

我有一个Python脚本,包含以下导入语句,执行python3 Program.py时可正常运行:

import gi
gi.require_version('Gtk', '3.0')
import subprocess
import os.path
import re
import cairo
import json
import base64

from gi.repository import Gtk as gtk
from gi.repository import Gdk as gdk
from gi.repository import GdkPixBuf
from gi.repository import GLib
from gi.repository import Gio
from dataclasses import dataclass
from typing import List
问题与尝试操作

目标

我希望下载这些库,用于无网络访问的离线环境中运行程序。

尝试操作

...
pip download subprocess
ERROR: Could not find a version that satisfies the requirement gi (from versions: none)
ERROR: No matching distribution found for gi
pip3 download subprocess    
ERROR: Could not find a version that satisfies the requirement gi (from versions: none)
ERROR: No matching distribution found for gi
pip3 install gi
ERROR: Could not find a version that satisfies the requirement gi (from versions: none)
ERROR: No matching distribution found for gi
...

我按照教程和相关方案尝试使用pip下载,却持续收到“Could not find a version that satisfies the requirement gi”或针对其他库的类似错误。无论是通过requirements.txt文件还是单独的pip命令执行,都会出现该问题。

关于gi库,我在网上了解到它对应PyGObject以便在新版本Python中导入,但我不理解为何本地脚本能正常导入该库,却无法通过pip下载;同时subprocess等库也存在同样的问题,恳请提供解决方案。


解决方案

依赖分类说明

你的导入依赖分为三类,不同类型的依赖获取方式不同:

  1. Python标准库:subprocess、os.path、re、json、base64、dataclasses、typing 这些是Python 3.8自带的核心库,不需要通过pip或其他工具额外安装,只要离线环境安装的是Python 3.8.10,就能直接导入使用。
  2. 系统Debian/Ubuntu包:gi(即PyGObject)及GTK相关组件(Gtk、Gdk等)是通过Ubuntu系统的apt包管理器安装的,不在PyPI源中,所以pip无法找到。本地能导入是因为Ubuntu默认通过apt预装了python3-gi包。
  3. PyPI可下载包:cairo对应的Python绑定是pycairo,可以通过pip下载。

具体操作步骤

1. 处理PyPI包(pycairo)

在联网的Ubuntu 20.04环境下,执行以下命令下载离线包:

# 创建存储目录
mkdir ./offline_pip_pkgs
# 下载pycairo及其依赖
pip3 download pycairo --dest ./offline_pip_pkgs

将offline_pip_pkgs目录复制到离线环境后,执行安装:

pip3 install --no-index --find-links ./offline_pip_pkgs pycairo

2. 处理系统包(gi及GTK相关依赖)

在联网的同版本Ubuntu 20.04机器上,下载所需的deb包:

# 创建存储目录
mkdir ./offline_deb_pkgs
# 下载核心依赖包
sudo apt-get download python3-gi gir1.2-gtk-3.0 gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gio-2.0
# 移动到目标目录
mv *.deb ./offline_deb_pkgs

将offline_deb_pkgs目录复制到离线环境后,执行安装:

sudo dpkg -i ./offline_deb_pkgs/*.deb
# 若出现依赖缺失,执行以下命令修复(需确保离线环境有本地依赖源,或提前下载所有缺失的依赖deb包)
sudo apt-get -f install

3. 验证离线环境运行

完成上述安装后,在离线环境执行python3 Program.py即可正常运行脚本。


内容的提问来源于stack exchange,提问作者Tommy Sanger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 15:35:27