"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o Python 3.6.1 lança \"AttributeError: Module \'enum\' Has No Attribute \'IntFlag\'?\"

Por que o Python 3.6.1 lança \"AttributeError: Module \'enum\' Has No Attribute \'IntFlag\'?\"

Publicado em 2024-11-10
Navegar:904

Why Does Python 3.6.1 Throw \

Por que o Python 3.6.1 lança "AttributeError: Module 'enum' Has No Attribute 'IntFlag'?"

Depois de instalar o Python 3.6.1 para macOS X, um tentativa de usar o console ou executar qualquer coisa com Python3 gera uma mensagem de erro enigmática:

AttributeError: module 'enum' has no attribute 'IntFlag'

Análise de problema

Curiosos para saber por que esse erro ocorre, examinamos o código em questão:

class RegexFlag(enum.IntFlag):

A classe RegexFlag herda de enum.IntFlag, que é membro do módulo enum. No entanto, encontramos o erro porque Python lança uma exceção AttributeError, indicando que o módulo enum não possui o atributo IntFlag.

Solution

Investigando o problema, descobrimos que o módulo enum em uso pode não ser o da biblioteca padrão. O pacote enum34, projetado para versões do Python abaixo de 3.5, pode ser instalado junto com o enum da biblioteca padrão no Python 3.6.1.

A verificação da autenticidade do enum pode ser feita inspecionando o caminho do arquivo:

import enum
print(enum.__file__)

Se enum.__file__ não apontar para o local da biblioteca padrão (por exemplo, /usr/local/lib/python3.6/enum.py), então o pacote enum34 é provavelmente o causa do problema.

Resolução

Para corrigir a situação, desinstale enum34:

pip uninstall -y enum34

Como alternativa, se o código precisar ser executado em ambas as versões do Python anteriores a 3.5 e superiores a 3.5, considere usar o pacote enum-compat. Este pacote instala o enum34 apenas para versões mais antigas do Python que não possuem o módulo enum da biblioteca padrão.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3