Why Python 3.6.1 throws AttributeError: module 'enum' has no attribute 'IntFlag'?

前端 未结 17 1095
无人共我
无人共我 2020-11-22 16:34

I just installed Python 3.6.1 for MacOS X

When I attempt to run the Console(or run anything with Python3), this error is thrown:

  AttributeError: mo         


        
相关标签:
17条回答
  • 2020-11-22 16:58

    It's because your enum is not the standard library enum module. You probably have the package enum34 installed.

    One way check if this is the case is to inspect the property enum.__file__

    import enum
    print(enum.__file__)  
    # standard library location should be something like 
    # /usr/local/lib/python3.6/enum.py
    

    Since python 3.6 the enum34 library is no longer compatible with the standard library. The library is also unnecessary, so you can simply uninstall it.

    pip uninstall -y enum34
    

    If you need the code to run on python versions both <=3.4 and >3.4, you can try having enum-compat as a requirement. It only installs enum34 for older versions of python without the standard library enum.

    0 讨论(0)
  • 2020-11-22 16:58

    Not sure whether you still have this issue. I had a similar issue and I was able to resolve it simply by unsetting PYTHONPATH

    $ unset PYTHONPATH

    0 讨论(0)
  • 2020-11-22 17:01

    Installing version 1.1.8 of enum34 worked for me.

    I was able to fix this by adding enum34 = "==1.1.8" to pyproject.toml. Apparently enum34 had a feature in v1.1.8 that avoided this error, but this regressed in v1.1.9+. This is just a workaround though. The better solution would be for packages to use environment markers so you don't have to install enum34 at all unless needed.

    Source: https://github.com/python-poetry/poetry/issues/1122

    0 讨论(0)
  • 2020-11-22 17:02

    If anyone coming here because of getting this error while running a google app engine Python 3.7 standard environment project in PyCharm then all you need to do is

    • Make sure the configuration to run is for Flask, not Google App Engine configuration.
    • Then disable Google App Engine support under Preferences >> Languages & Framework >> Google App Engine

    The reason being as per this link

    The overall goal is that your app should be fully portable and run in any standard Python environment. You write a standard Python app, not an App Engine Python app. As part of this shift, you are no longer required to use proprietary App Engine APIs and services for your app's core functionality. At this time, App Engine APIs are not available in the Python 3.7 runtime.

    I guess when we create a python 3.7 project in PyCharm as a Google app engine project it still tries to do the same way it does for a python2.7 app

    0 讨论(0)
  • 2020-11-22 17:03

    For me this error occured after installing of gcloud component app-engine-python in order to integrate into pycharm. Uninstalling the module helped, even if pycharm is now not uploading to app-engine.

    0 讨论(0)
  • 2020-11-22 17:04

    I had this problem in ubuntu20.04 in jupyterlab in my virtual env kernel with python3.8 and tensorflow 2.2.0. Error message was

     Traceback (most recent call last):
      File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
        "__main__", fname, loader, pkg_name)
      File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
        exec code in run_globals
      File "/home/hu-mka/.local/lib/python2.7/site-packages/ipykernel_launcher.py", line 15, in <module>
        from ipykernel import kernelapp as app
      File "/home/hu-mka/.local/lib/python2.7/site-packages/ipykernel/__init__.py", line 2, in <module>
        from .connect import *
      File "/home/hu-mka/.local/lib/python2.7/site-packages/ipykernel/connect.py", line 13, in <module>
        from IPython.core.profiledir import ProfileDir
      File "/home/hu-mka/.local/lib/python2.7/site-packages/IPython/__init__.py", line 48, in <module>
        from .core.application import Application
      File "/home/hu-mka/.local/lib/python2.7/site-packages/IPython/core/application.py", line 23, in <module>
        from traitlets.config.application import Application, catch_config_error
      File "/home/hu-mka/.local/lib/python2.7/site-packages/traitlets/__init__.py", line 1, in <module>
        from .traitlets import *
      File "/home/hu-mka/.local/lib/python2.7/site-packages/traitlets/traitlets.py", line 49, in <module>
        import enum
    ImportError: No module named enum
    

    problem was that in symbolic link in /usr/bin/python was pointing to python2. Solution:

    cd /usr/bin/
    sudo ln -sf python3 python
    

    Hopefully Python 2 usage will drop off completely soon.

    0 讨论(0)
提交回复
热议问题