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.
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