【问题标题】:Absolute imports from "tests" package fails with ModuleNotFoundError in PyCharm debuggerPyCharm 调试器中的“测试”包中的绝对导入失败并出现 ModuleNotFoundError
【发布时间】:2021-03-26 13:39:57
【问题描述】:

鉴于以下简单的 Python 项目,

$ tree
.
├── Pipfile
├── Pipfile.lock
├── src
└── tests
    ├── test_foo.py
    └── util.py

$ cat Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
ipython = "*"
pytest = "*"

[dev-packages]

[requires]
python_version = "3.9"

$ cat tests/util.py 
FOO = 5

$ cat tests/test_foo.py 
from tests.util import FOO


def test_foo():
    assert FOO == 5

test_foo 上使用pytest 和适当的pipenv --venv 运行PyCharm 调试器会产生以下错误:

Connected to pydev debugger (build 202.8194.15)
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'tests.util'

【问题讨论】:

    标签: python python-3.x pycharm ipython python-module


    【解决方案1】:

    test_foo.py 中,如果你打印出sys.path,你会注意到PyCharm 注入了&lt;path_to_venv&gt;/lib/python&lt;version&gt;/site-packages/IPython/extensions,它恰好包含一个tests 模块,它破坏了本地命名空间tests。此问题已在上游报告:请参阅 https://github.com/ipython/ipython/issues/11592

    目前有两种解决方法:

    1. 将您的 tests 目录重命名为其他名称。
    2. 删除&lt;path_to_venv&gt;/lib/python&lt;version&gt;/site-packages/IPython/extensions/tests 文件夹。

    【讨论】:

      猜你喜欢
      • 2020-07-06
      • 1970-01-01
      • 2019-07-03
      • 2015-05-28
      • 2014-12-02
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 2021-09-23
      相关资源
      最近更新 更多