kookboy
deepin
6 hours ago 解决方案
有几种可能的解决思路:
方案一:使用 uvx / pipx 安装依赖(推荐)
代码·
# 安装 uvx(如果还没有) curl -LsSf https://astral.sh/uv/install.sh | sh # 使用 uvx 运行 Anki(或任何需要隔离 Python 环境的应用) uvx anki
但更实际的做法是为 Anki 创建一个独立的虚拟环境,这个方法我经常****使用:
代码·
# 创建一个虚拟环境 python -m venv ~/.anki-venv # 激活并安装依赖 source ~/.anki-venv/bin/activate pip install python-docx python-pptx pypdf
但是:Anki 默认不使用这个虚拟环境。你需要修改 Anki 的启动脚本或者在插件中使用 sys.path.insert 来添加虚拟环境的 site-packages 路径。
方案二:将依赖打包到插件目录下(最稳健)
这是 Anki 插件开发的标准做法 —— 不依赖系统 Python,而是把依赖库放在插件目录内:
代码
~/.local/share/Anki2/addons21/999001/ ├── __init__.py └── libs/ ├── docx/ ├── pptx/ └── pypdf/
可以用 pip download -d libs/ python-docx python-pptx pypdf 下载 wheel 文件,然后解压到 libs 目录,并在 __init__.py 中添加:
代码· python
import sys import os addon_dir = os.path.dirname(__file__) libs_dir = os.path.join(addon_dir, 'libs') if libs_dir not in sys.path: sys.path.insert(0, libs_dir)
方案三:换用 Flatpak/Snap 版本的 Anki
Flatpak 版本自带完整的 Python 环境,不受系统限制:
代码· bash
flatpak install flathub net.ankiweb.anki
Reply Like 0 View the author


中文 

系统版本:Deepin 25(Debian12) 软件来源:应用商店Anki官方安装包 问题简述:系统Python与Anki内置Python环境完全隔离,安装docx/pptx/pypdf后Anki插件加载直接空白失效,无法实现Word/PPT/PDF题库导入功能。 故障复现步骤 1. 终端安装依赖 bash pip3 install --break-system-packages python-docx python-pptx pypdf 2. 在 ~/.local/share/Anki2/addons21/999001 新建 __init__.py ,完整源码如下: python from aqt import mw from aqt.qt import * from aqt.utils import getOpenFile, showInfo import os from docx import Document from pptx import Presentation def extract_text(file_path): ext = os.path.splitext(file_path)[1].lower() text = "" try: if ext == ".docx": doc = Document(file_path) text = "\n".join([p.text.strip() for p in doc.paragraphs if p.text.strip()]) elif ext == ".pptx": prs = Presentation(file_path) for slide in prs.slides: for shape in slide.shapes: if hasattr(shape, "text") and shape.text.strip(): text += shape.text + "\n" elif ext == ".pdf": from pypdf import PdfReader reader = PdfReader(file_path) for page in reader.pages: page_text = page.extract_text() if page_text: text += page_text + "\n" except Exception as e: showInfo(f"读取文件失败:{str(e)}") return "" return text def import_all_format_cards(): path = getOpenFile( None, "选择题库文件(docx/pdf/pptx)", "", "支持文档 (*.docx *.pdf *.pptx)" ) if not path: return full_text = extract_text(path) if not full_text: showInfo("文件未读取到有效文字!") return lines = [line.strip() for line in full_text.splitlines() if line.strip()] note_type = mw.col.models.current() deck_id = mw.col.decks.current() count = 0 for i in range(0, len(lines), 2): if i + 1 >= len(lines): break front = lines[i] back = lines[i+1] note = mw.col.new_note(note_type) note.fields[0] = front note.fields[1] = back mw.col.add_note(note, deck_id) count += 1 showInfo(f"导入完成,共生成 {count} 张卡片") mw.reset() action = QAction("导入Word/PDF/PPT题库", mw) action.triggered.connect(import_all_format_cards) mw.form.menuTools.addAction(action) 3. 彻底关闭Anki重启,打开工具-插件,面板空白,无插件显示。 问题根源 Deepin25默认开启 externally-managed-environment ,Anki自带独立Python,无法读取系统pip安装的第三方库,代码导入docx模块直接抛出ModuleNotFoundError,插件加载中断。 尝试检索Anki内置Python解释器无任何输出,无法手动给Anki内置环境安装依赖;打包vendor、虚拟环境启动操作门槛极高,普通学生用户无法操作。 已做反馈 今日已向官方邮箱 support@deepin.org 发送完整反馈邮件,附带Anki报错日志、Python检索空白日志、依赖安装清单、插件源码打包附件,等待官方处理。 用户诉求 1. 适配商店Anki安装包,打通Anki内置Python读取系统第三方库的权限; 2. 提供简易方案,降低普通用户使用Anki文档类插件的操作门槛; 3. 完善官方文档,标注Anki等Python桌面软件在Deepin25的兼容解决方案。 补充说明 Windows、macOS、Deepin23、旧版Ubuntu无此隔离问题,插件可直接正常使用,仅Deepin25/Debian12存在该兼容性障碍,大量学习类Anki拓展插件全部受影响。