PyCharm 调试器中的“测试”包中的绝对导入失败并出现 ModuleNotFoundError
Posted
技术标签:
【中文标题】PyCharm 调试器中的“测试”包中的绝对导入失败并出现 ModuleNotFoundError【英文标题】:Absolute imports from "tests" package fails with ModuleNotFoundError in PyCharm debugger 【发布时间】: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'
【问题讨论】:
【参考方案1】:在test_foo.py
中,如果你打印出sys.path
,你会注意到PyCharm 注入了<path_to_venv>/lib/python<version>/site-packages/IPython/extensions
,它恰好包含一个tests
模块,它破坏了本地命名空间tests
。此问题已在上游报告:请参阅 https://github.com/ipython/ipython/issues/11592。
目前有两种解决方法:
-
将您的
tests
目录重命名为其他名称。
删除<path_to_venv>/lib/python<version>/site-packages/IPython/extensions/tests
文件夹。
【讨论】:
以上是关于PyCharm 调试器中的“测试”包中的绝对导入失败并出现 ModuleNotFoundError的主要内容,如果未能解决你的问题,请参考以下文章
从 PyCharm 社区版中的鼠标右键单击上下文菜单运行/调试 Django 应用程序单元测试?
调试 APK 工作正常,包中的 APKS 工作正常,但发布包不能正常工作
从 Ubuntu 中的 pip install 包中找到源代码