Python 错误 AttributeError: module ‘enum’ has no attribute ‘IntFlag’ 解决方法

要解决“AttributeError: module ‘enum’ has no attribute ‘IntFlag’”,需要在终端中运行 pip uninstall -y enum34 卸载 enum34 模块。 如果错误仍然存在,请确保我们的项目中没有 enum.py 文件。

首先要尝试卸载 enum34 模块,因为它可能会影响官方 enum 模块。

在项目的根目录中打开终端并运行以下命令。

$ pip uninstall -y enum34

现在尝试从 enum 模块导入和使用 Enum 类。

from enum import Enum


class Sizes(Enum):
    SMALL = 'sm'
    MEDIUM = 'md'
    LARGE = 'lg'


print(Sizes.MEDIUM.name)  # ?️ MEDIUM

print(Sizes.MEDIUM.value)  # ?️ md

如果错误仍然存在,请确保您没有名为 enum.py 的本地文件,因为这会影响 enum 模块。

我们可以访问导入模块的 __file__ 属性来查看它是否被本地文件隐藏。

import enum

print(enum.__file__)

# ⛔️ 被本地文件隐藏的结果
#  /home/jiyik/Desktop/jiyik_python/enum.py

# ✅ 如果导入了正确的模块,结果为
#  /usr/lib/python3.10/enum.py

如果没有任何建议有帮助,请尝试取消设置 PYTHONPATH 环境变量。

打开终端并运行以下命令。

$ unset PYTHONPATH

这有时会修复具有多个 Python 版本的机器上的故障。