Acabo de instalar Python 3.6.1 para MacOS X
Cuando intento ejecutar la consola (o ejecutar cualquier cosa con Python3), aparece este error:
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'
La clase IntFlag existe dentro de enum.py. Entonces, ¿por qué se lanza AttributeError?
python
python-3.x
enums
python-3.6
attributeerror
BryanWheelock
fuente
fuente
enum.py
en su directorio de trabajo, por casualidad?enum.py
en su directorio de trabajo-I
opción para ignorar los paquetes del sitio y la variable de entorno y / o-v
para ver mensajes detallados sobre las importacionesRespuestas:
Es porque tu
enum
no es elenum
módulo de biblioteca estándar . Probablemente tengas el paqueteenum34
instalado.Una forma de comprobar si este es el caso es inspeccionar la propiedad
enum.__file__
Desde python 3.6, la biblioteca enum34 ya no es compatible con la biblioteca estándar. La biblioteca también es innecesaria, por lo que simplemente puede desinstalarla.
Si necesita que el código se ejecute en versiones de Python tanto <= 3.4 como> 3.4, puede intentar tenerlo
enum-compat
como requisito. Solo se instalaenum34
para versiones anteriores de python sin la enumeración de biblioteca estándar.fuente
ipython2 --> traitlets --> enum34
. (Desafortunadamente,enum34
está instalado en.../2.7/site-packages/enum
no.../2.7/site-packages/enum34
- buscando problemas)Skipping enum34 as it is not installed
.. Estoy usando 3.7print(enum.__file__)
me da esto/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/enum.py
? ¿Significa que tengo unaenum
biblioteca estándar y noenum34
? Editar: sí,pip uninstall enum34
me lo dioSkipping enum34 as it is not installed.
jupyter notebook
por cierto.No estoy seguro de si aún tiene este problema. Tuve un problema similar y pude resolverlo simplemente desarmando
PYTHONPATH
$ unset PYTHONPATH
fuente
Settings->Build, Execution, Deployment->Console->Python Console
. Luego eliminé la variable PYTHONPATH del campo tituladoEnvironment variables
. Nota: en el momento de escribir este artículo, estaba usando PyCharm 2017.1.2.Para mí, este error se produjo después de instalar el componente de gcloud app-engine-python para integrarlo en pycharm. La desinstalación del módulo ayudó, incluso si pycharm ahora no se carga en app-engine.
fuente
Si alguien viene aquí porque recibe este error mientras ejecuta un proyecto de entorno estándar Python 3.7 del motor de aplicaciones de Google en PyCharm, entonces todo lo que necesita hacer es
La razón es según este enlace.
Supongo que cuando creamos un proyecto de Python 3.7 en PyCharm como un proyecto de motor de aplicaciones de Google, todavía intenta hacer lo mismo que lo hace con una aplicación de Python2.7
fuente
gcloud app deploy
. Eso no tiene nada que ver con Pycharm.DESCARGO DE RESPONSABILIDAD: Por favor, @ juanpa.arrivillaga, si ve esta respuesta, no dude en escribir la suya propia y eliminaré esta publicación.
@ juanpa.arrivillaga había mencionado anteriormente :
Este fue el problema que encontré. No estaba al tanto del módulo de enumeración en Python en ese momento y había nombrado mi archivo de prueba
enum.py
.Dado que el nombre del archivo es el nombre del módulo, hubo un conflicto. Más información sobre los módulos aquí: https://docs.python.org/2/tutorial/modules.html
fuente
Deshabilitar "Google App Engine Support" en las preferencias de Pycharm solucionó este problema.
fuente
La respuesta de Håken Lid ayudó a resolver mi problema (¡gracias!), En mi caso presente en Python3.7 ejecutando Flask en un contenedor Docker (
FROM tiangolo/uwsgi-nginx-flask:python3.7-alpine3.7
).En mi caso,
enum34
estaba siendo instalado por otra biblioteca (pip install smartsheet-python-sdk
). Para aquellos que vienen con un problema similar de contenedor de Docker, aquí está mi último Dockerfile (despojado de las líneas relevantes):fuente
En caso de que tenga que mantener PYTHONPATH tanto para python2 como para python3, puede escribir declaraciones de alias para establecer el PYTHONPATH adecuado en su bash_profile:
Codifique sus variables PYTHONPATH2 y PYTHONPATH3 en su ~ / .bash_profile, y agregue los siguientes alias al final:
Mi
python
(se refiere a python2) ya que uso python2 con más frecuencia.fuente
Cuando alguna vez tengo este problema:
simplemente primero ejecuto el comando:
y luego ejecutar mi comando deseado y luego tener éxito en eso.
fuente
La instalación de la versión 1.1.8 de enum34 funcionó para mí.
Fuente: https://github.com/python-poetry/poetry/issues/1122
fuente
pyinstaller
.Lo hice usando
pip install <required-library> --ignore-installed enum34
Una vez que la biblioteca requerida esté instalada, busque advertencias durante la compilación. Tengo un error 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 solucionar este problema ahora ejecutar el comando:
pip freeze | grep enum34
. Esto le dará la versión del enum34 instalado. Ahora desinstálelopip uninstall enum34
y reinstale la versión requerida comopip install "enum34==1.1.20"
fuente
Tengo Python 2 y Python 3 instalados en mi computadora. Por alguna extraña razón, tengo en el sys.path de Python 3 también una ruta al directorio de la biblioteca del paquete de sitio de Python2 cuando se llama al módulo re. Si ejecuto Python 3 e importo enum y
print(enum.__file__)
el sistema no muestra esta ruta de Python 2 a los paquetes del sitio. Entonces, un truco muy rudo y sucio es modificar directamente el módulo en el que se importa la enumeración (siga las rutas de rastreo) e inserte el siguiente código justo antes de importar la enumeración:Eso resolvió mi problema.
fuente
Incluso tuve este problema mientras ejecutaba python -m grpc_tools.protoc --version Tuve que configurar PYTHONPATH hasta los paquetes del sitio y cerrar todas las ventanas del símbolo del sistema y funcionó. Espero que ayude a los usuarios de gRPC.
fuente
Tuve este problema en ubuntu20.04 en jupyterlab en mi kernel env virtual con python3.8 y tensorflow 2.2.0. El mensaje de error era
El problema era que en el enlace simbólico en / usr / bin / python apuntaba a python2. Solución:
¡Espero que python2 muera pronto! Terveisin, Markus
fuente
Si usted tiene este problema al ejecutar pruebas en
PyCharm
, asegúrese de que la segunda caja es marcada en las configuraciones.fuente
Si alguien está teniendo este problema al intentar ejecutar Jupyter núcleo de un virtualenv, sólo tiene que añadir correcta
PYTHONPATH
alkernel.json
de su núcleo virtualenv (Python 3 en el ejemplo):fuente