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

如何将typing_extensions.Literal绑定到其他模块实现跨模块导入

问题原因

该报错的核心原因是mypy默认会将colour.utilities.hints模块中赋值的Literal识别为普通变量,而非可用于注解的类型别名,因此不允许将其用作类型构造器。后续的Name "Flip" is not defined等报错属于连锁问题,只要修复了Literal的类型识别问题就会自动消失。

解决方案

有两种常用的修复方式,选择其中一种即可:

方案1:显式标注为类型别名

在Python 3.7环境下,你可以借助typing_extensions.TypeAlias显式告诉mypy这是一个类型别名,修改colour/utilities/hints.py代码如下:

import typing_extensions
from typing_extensions import TypeAlias

Literal: TypeAlias = typing_extensions.Literal
# 其余要导出的ArrayLike、NDArray等类型别名也可以用同样方式标注

方案2:直接重导出导入的类型

不用手动赋值绑定,直接用导入语法重导出Literal,mypy原生支持识别这种导出的类型,修改colour/utilities/hints.py代码如下:

from typing_extensions import Literal
# 这里放其他要导出的类型的导入/定义逻辑,比如ArrayLike、NDArray的相关代码

# 可选:添加__all__明确导出列表,避免导出冗余内容
__all__ = ["ArrayLike", "NDArray", "Literal"]

修改完成后重新执行类型检查,报错就会消失,也不需要改动array.py里的导入和使用逻辑。

内容的提问来源于stack exchange,提问作者Kel Solaar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:24:04