Acabei de instalar o Python 3.6.1 para MacOS X
Quando tento executar o console (ou executar qualquer coisa com Python3), este erro é gerado:
AttributeError: module 'enum' has no attribute 'IntFlag'
$ /Library/Frameworks/Python.framework/Versions/3.6/bin/python3
Failed to import the site module
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 544, in <module>
main()
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 530, in main
known_paths = addusersitepackages(known_paths)
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 282, in addusersitepackages
user_site = getusersitepackages()
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 258, in getusersitepackages
user_base = getuserbase() # this will also set USER_BASE
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site.py", line 248, in getuserbase
USER_BASE = get_config_var('userbase')
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/sysconfig.py", line 601, in get_config_var
return get_config_vars().get(name)
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/sysconfig.py", line 580, in get_config_vars
import _osx_support
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/_osx_support.py", line 4, in <module>
import re
File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/re.py", line 142, in <module>
class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'
A classe IntFlag existe em enum.py. Então, por que o AttributeError está sendo lançado?
python
python-3.x
enums
python-3.6
attributeerror
BryanWheelock
fonte
fonte
enum.py
em seu diretório de trabalho, por acaso?enum.py
em seu diretório de trabalho-I
opção de ignorar os pacotes do site e a variável de ambiente e / ou com-v
para ver as mensagens detalhadas sobre as importaçõesRespostas:
É porque seu
enum
não é oenum
módulo de biblioteca padrão . Você provavelmente tem o pacoteenum34
instalado.Uma forma de verificar se este é o caso é inspecionar a propriedade
enum.__file__
Desde o python 3.6, a biblioteca enum34 não é mais compatível com a biblioteca padrão. A biblioteca também é desnecessária, então você pode simplesmente desinstalá-la.
Se você precisa que o código seja executado nas versões Python <= 3.4 e> 3.4, você pode tentar ter
enum-compat
como requisito. Ele instala apenasenum34
para versões mais antigas do python sem a biblioteca padrão enum.fonte
ipython2 --> traitlets --> enum34
. (Infelizmente,enum34
está instalado em.../2.7/site-packages/enum
não.../2.7/site-packages/enum34
- pedindo problemas.)Skipping enum34 as it is not installed
.. Estou usando o 3.7print(enum.__file__)
me dá essa:/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/enum.py
. Isso significa que tenho umaenum
biblioteca padrão e nãoenum34
? Edit: sim,pip uninstall enum34
me deuSkipping enum34 as it is not installed.
jupyter notebook
by the way.Não tenho certeza se você ainda tem esse problema. Tive um problema semelhante e consegui resolvê-lo simplesmente desestabilizando
PYTHONPATH
$ unset PYTHONPATH
fonte
Settings->Build, Execution, Deployment->Console->Python Console
. Em seguida, removi a variável PYTHONPATH do campo intituladoEnvironment variables
. Observação: no momento da redação deste artigo, eu estava usando o PyCharm 2017.1.2.Para mim, esse erro ocorreu após a instalação do componente app-engine-python do gcloud para integrar ao pycharm. Desinstalar o módulo ajudou, mesmo que o pycharm não esteja sendo carregado no app-engine.
fonte
Se alguém vier aqui devido a este erro ao executar um projeto de ambiente padrão do Google app engine Python 3.7 no PyCharm, tudo o que você precisa fazer é
O motivo é conforme este link
Acho que quando criamos um projeto python 3.7 no PyCharm como um projeto do Google app engine, ele ainda tenta fazer a mesma coisa que faz para um aplicativo python 2.7
fonte
gcloud app deploy
. Isso não tem nada a ver com pycharm.AVISO LEGAL: Por favor, @ juanpa.arrivillaga, se você vir esta resposta, fique à vontade para escrever a sua própria e eu removerei esta postagem.
@ juanpa.arrivillaga mencionou acima :
Este foi o problema que encontrei. Eu não conhecia o módulo enum em python na época e havia nomeado meu arquivo de teste
enum.py
.Como o nome do arquivo é o nome do módulo, houve um conflito. Mais informações sobre os módulos aqui: https://docs.python.org/2/tutorial/modules.html
fonte
Desativar o "Suporte do Google App Engine" nas preferências do pycharm corrigiu esse problema para mim.
fonte
A resposta de Håken Lid ajudou a resolver meu problema (obrigado!), No meu caso presente no Python3.7 executando o Flask em um contêiner do Docker (
FROM tiangolo/uwsgi-nginx-flask:python3.7-alpine3.7
).No meu caso,
enum34
estava sendo instalado por outra biblioteca (pip install smartsheet-python-sdk
). Para aqueles que vêm com um problema semelhante de contêiner do Docker, aqui está meu Dockerfile final (reduzido às linhas relevantes):fonte
No caso de você ter que manter PYTHONPATH para python2 e python3, você pode escrever declarações de alias para definir o PYTHONPATH adequado em seu bash_profile:
Codifique suas variáveis PYTHONPATH2 e PYTHONPATH3 em seu ~ / .bash_profile e adicione os seguintes aliases no final dele:
Meu
python
(refere-se a python2) porque eu uso python2 com mais frequênciafonte
Sempre que tive este problema:
simplesmente primeiro executo o comando:
e, em seguida, execute o comando desejado e obtive sucesso nisso.
fonte
A instalação da versão 1.1.8 do enum34 funcionou para mim.
Fonte: https://github.com/python-poetry/poetry/issues/1122
fonte
pyinstaller
.Eu fiz usando
pip install <required-library> --ignore-installed enum34
Uma vez que sua biblioteca necessária for instalada, procure por avisos durante a construção. Recebi um erro como este:
Using legacy setup.py install for future, since package 'wheel' is not installed
ERROR: pyejabberd 0.2.11 has requirement enum34==1.1.2, but you'll have enum34 1.1.10 which is incompatible.
Para corrigir esse problema agora executar o comando:
pip freeze | grep enum34
. Isso fornecerá a versão do enum34 instalado. Agora desinstale-opip uninstall enum34
e reinstale a versão necessária comopip install "enum34==1.1.20"
fonte
Tenho Python 2 e Python 3 instalados no meu computador. Por alguma razão estranha, tenho no sys.path do Python 3 também um caminho para o diretório da biblioteca do sitepackage do Python2 quando o módulo re é chamado. Se eu executar o Python 3 e importar enum e
print(enum.__file__)
o sistema não mostrar esse caminho do Python 2 para os pacotes do site. Portanto, um hack muito bruto é modificar diretamente o módulo no qual o enum é importado (siga os caminhos de traceback) e inserir o seguinte código antes de importar o enum:Isso resolveu meu problema.
fonte
Até eu tive esse problema ao executar python -m grpc_tools.protoc --version Tive que definir o PYTHONPATH para os pacotes do site e desligar todas as janelas do prompt de comando e funcionou. Espero que ajude para usuários do gRPC.
fonte
Eu tive esse problema no ubuntu20.04 no jupyterlab no meu kernel env virtual com python3.8 e tensorflow 2.2.0. A mensagem de erro era
O problema era que no link simbólico em / usr / bin / python estava apontando para python2. Solução:
Espero que python2 morra logo! Terveisin, Markus
fonte
Se você tiver esse problema ao executar testes no
PyCharm
, certifique-se de que a segunda caixa esteja desmarcada nas configurações.fonte
Se alguém estiver tendo esse problema ao tentar executar o kernel do Jupyter a partir de um virtualenv, basta adicionar correto
PYTHONPATH
aokernel.json
do seu kernel virtualenv (Python 3 no exemplo):fonte