【问题标题】:PyCharm unittests: AttributeError: module 'enum' has no attribute 'IntFlag'PyCharm unittests:AttributeError:模块“枚举”没有属性“IntFlag”
【发布时间】:2019-03-17 05:19:05
【问题描述】:

我有一个错误,在 PyCharm 中运行单元测试时只出现

OSX 上的 Python 3.6.5。

/Users/me/project/env/bin/python /Applications/PyCharm.app/Contents/helpers/pycharm/_jb_unittest_runner.py --target test_module.TestClass.test_method

Traceback (most recent call last):
  File "/Applications/PyCharm.app/Contents/helpers/pycharm/_jb_unittest_runner.py", line 4, in <module>
    from unittest import main
  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/__init__.py", line 58, in <module>
    from .result import TestResult
  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/unittest/result.py", line 5, in <module>
    import traceback
  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/traceback.py", line 5, in <module>
    import linecache
  File "/Users/enos/patrf/api/env/lib/python3.6/linecache.py", line 11, in <module>
    import tokenize
  File "/Users/enos/patrf/api/env/lib/python3.6/tokenize.py", line 33, in <module>
    import re
  File "/Users/enos/patrf/api/env/lib/python3.6/re.py", line 142, in <module>
    class RegexFlag(enum.IntFlag):
AttributeError: module 'enum' has no attribute 'IntFlag'

此错误似乎与Why Python 3.6.1 throws AttributeError: module 'enum' has no attribute 'IntFlag'? 有关 那里的建议在这里不起作用。

  • enum-compat 添加到 requirements.txt 不会改变任何内容。
  • 一个根本不导入任何内容的简单单元测试 .py 文件仍然显示此问题。
  • 我的项目目录中没有enum.py 文件。
  • 发生在干净的virtualenv 和干净的venv
  • 在 PyCharm 之外一切正常。

这似乎只发生在我拥有的一个使用石墨烯的项目中,它确实有一个enum.py,但即使删除这些文件也没有效果。 find . -name "enum.py" 不返回任何内容。

有任何 PyCharm 专家有想法吗?我真的很喜欢在 PyCharm 中运行我的测试,我希望能够为这个项目这样做。

【问题讨论】:

    标签: python-3.x pycharm python-unittest


    【解决方案1】:

    我也遇到了这个问题。我能够通过删除 enum34 包来解决它。即使您使用的是 venv,您也需要确保检查 PyCharm 项目解释器添加到 PYTHONPATH 的所有目录。仅运行 pip uninstall enum34 可能无法解决问题。

    在我的例子中,我让 PyC​​harm 将额外的目录加载到 PYTHONPATH 中,并且 enum34 包包含在其中之一中。从该目录中删除它解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      • 2020-08-11
      • 2017-08-24
      相关资源
      最近更新 更多