#1009 NameError: name 'DeepgramApiError' is not defined

104.28* Posted at: 1 day ago 👁26

Traceback (most recent call last):
File "/Users/tips/voice/pyvideotrans/videotrans/task/job.py", line 146, in run

trk.trans()

File "/Users/tips/voice/pyvideotrans/videotrans/task/_translate_srt.py", line 45, in trans

raw_subtitles = run(
                ^^^^

File "/Users/tips/voice/pyvideotrans/videotrans/translator/__init__.py", line 844, in run

from videotrans.translator._google import Google

File "/Users/tips/voice/pyvideotrans/videotrans/translator/_google.py", line 10, in

from videotrans.configure._except import NO_RETRY_EXCEPT

File "/Users/tips/voice/pyvideotrans/videotrans/configure/_except.py", line 83, in

DeepgramApiError,
^^^^^^^^^^^^^^^^

NameError: name 'DeepgramApiError' is not defined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/tips/voice/pyvideotrans/videotrans/task/job.py", line 155, in run

from videotrans.configure._except import get_msg_from_except

File "/Users/tips/voice/pyvideotrans/videotrans/configure/_except.py", line 83, in

DeepgramApiError,
^^^^^^^^^^^^^^^^

NameError: name 'DeepgramApiError' is not defined

=====
macOS-26.0.1-arm64-arm-64bit
version:v3.81
frozen:False
language:zh

10 Replies

本条内容由 gpt-5-mini 回复

问题很可能是源码中引用了尚未定义或未正确导入的 DeepgramApiError,导致在导入 videotrans.configure._except 时抛出 NameError(常见于定义顺序错误或循环导入)。

请按下面步骤修复并验证:

  1. 定位并打开文件

    • 打开项目中的文件:videotrans/configure/_except.py
  2. 临时且安全的修复(推荐快速验证)

    • 在文件开头的 imports 之后、任何引用 DeepgramApiError 之前,添加一个后备定义或尝试导入的代码片段。例如将以下代码插入到文件顶部(靠近其他 import 语句之后):
      try:

      from videotrans.configure._deepgram import DeepgramApiError

      except Exception:

      class DeepgramApiError(Exception):
          """Fallback 定义,避免导入时 NameError(用于解决循环导入或缺失定义)。"""
          pass
    • 保存并重新运行程序,检查错误是否消失。
  3. 根本原因排查(建议)

    • 搜索仓库中是否存在 DeepgramApiError 的原始定义:

      • 在项目根目录运行:grep -R "class DeepgramApiError" -n .
      • 或搜索导出/其它模块中是否应当导出此异常:grep -R "DeepgramApiError" -n .
    • 若找到了原始定义,确认 _except.py 中是否存在循环导入(例如 A 导入 B,B 又导入 A)。若是循环导入,应把通用异常类抽离到单独模块(如 videotrans/configure/_errors.py),在各处统一导入该模块以避免循环依赖。
    • 若仓库中不存在 DeepgramApiError 的定义,应用上一步的后备定义或在合适位置添加正式定义(继承自 Exception 并包含必要属性/消息)。
  4. 长期修复建议

    • 若你能修改代码,建议把所有自定义异常集中到一个文件(例如 videotrans/configure/_errors.py),并在各处通过 from videotrans.configure._errors import DeepgramApiError 等方式引用,避免循环导入和定义顺序问题。
    • 提交一个 PR 或 issue 给仓库(如果是从 upstream 拉的代码),说明发生 NameError 的上下文并附上修复建议。
  5. 如果问题依旧或你无法定位定义位置

    • 请提供完整的文件 videotrans/configure/_except.py 内容(或将该文件的前200行和后200行粘贴),以及仓库中是否存在其它与 Deepgram 相关的模块(如 _deepgram.py)的文件列表;或将 videotrans/logs/ 目录下最新的日志文件一并提供,以便进一步分析。

按上面快速修复后,大多数 NameError 情况会被解决。如果仍有错误,请把上述请求的文件/日志贴上来。

Admin

同一个虚拟环境下执行 pip3 install deepgram-sdk

试过了,还是不行

这个问题不是缺少 deepgram-sdk 包,而是代码中的 DeepgramApiError 类定义缺失或导入顺序问题。请按以下步骤操作:

  1. 临时解决方案

    • 打开文件 videotrans/configure/_except.py
    • 在文件开头(其他 import 语句之后)添加以下代码:

      try:
        from videotrans.configure._deepgram import DeepgramApiError
      except ImportError:
        class DeepgramApiError(Exception):
            """临时定义用于解决 NameError"""
            pass
    • 保存文件并重新运行程序
  2. 检查相关文件

    • 检查项目中是否存在 videotrans/configure/_deepgram.py 文件
    • 如果存在,确保其中包含 DeepgramApiError 类的定义
  3. 如果上述方法无效

    • 请提供 videotrans/configure/_except.py 文件的前50行内容
    • 检查 videotrans/logs/ 目录下的最新日志文件
    • 确认项目是从官方 GitHub 仓库下载的最新版本

这个问题是代码层面的导入问题,不是依赖包安装问题。如果继续报错,建议重新从官方仓库下载最新版本。

我只是想用一下 批量翻译srt字幕。这个功能,一点开始翻译,就会报错

这个问题是由于代码中的 DeepgramApiError 类定义缺失导致的,与批量翻译SRT字幕功能本身无关。请按以下步骤快速解决:

  1. 临时修复方案:

    • 打开文件 videotrans/configure/_except.py
    • 在文件开头的 import 语句之后添加以下代码:

      try:
       from videotrans.configure._deepgram import DeepgramApiError
      except ImportError:
       class DeepgramApiError(Exception):
         """临时定义用于解决 NameError"""
         pass
    • 保存文件并重新运行程序
  2. 如果上述方法无效:

    • 建议重新从官方 GitHub 仓库下载最新版本的 pyVideoTrans
    • 或者切换到其他翻译渠道(如 Google、Microsoft)暂时避开这个问题
  3. 检查日志:

    • 如果问题依旧,请提供 videotrans/logs/ 目录下的最新日志文件内容

这个错误是代码层面的导入问题,不是功能本身的问题,修复后批量翻译SRT字幕功能应该可以正常使用。

videotrans/configure/_except.py 这个文件中,没有包含DeepgramApiError的内容

问题确认:DeepgramApiError_except.py 文件中被引用但未定义。请按以下步骤修复:

立即解决方案:

  1. 打开文件 videotrans/configure/_except.py
  2. 找到第83行左右,应该能看到类似这样的代码:

    DeepgramApiError,
  3. 将这行代码注释掉或删除,修改为:

    # DeepgramApiError,
  4. 保存文件并重新运行批量翻译SRT字幕功能

原因说明:
这个错误是因为代码试图引用一个不存在的异常类。由于你只是使用批量翻译SRT字幕功能,并不需要Deepgram相关的功能,直接移除这个引用是安全的临时解决方案。

长期建议:

  • 从官方GitHub仓库重新下载最新版本
  • 或者向项目开发者报告这个bug

修复后,批量翻译SRT字幕功能应该可以正常工作了。如果还有其他错误,请提供新的错误日志。

问题解决了
谢谢

很高兴问题得到解决。如果后续在使用 pyVideoTrans 过程中遇到其他问题,欢迎随时提出。

Post Your Reply
Open source and free maintenance is not easy. If this project is helpful to you, please consider making a small donation to help the project continue to maintain and update.

Donate: https://ko-fi.com/jianchang512

Trending Questions