Python 为什么pytest总是说;ImportError:尝试在没有已知父包的情况下进行相对导入“;

Python 为什么pytest总是说;ImportError:尝试在没有已知父包的情况下进行相对导入“;,python,import,pytest,Python,Import,Pytest,我不熟悉pytest和python。我的项目结构是: projroot/ |-src/ |-a.py |-test/ |-test_a.py 而测试_a.py是: from..src导入a def测试_a(): 通过 然后在projroot下运行pytest: projroot>pytest 并且始终存在错误信息:E ImportError:尝试在没有已知父包的情况下进行相对导入。 Windows10x64上的Python verison:3.8。 我读了很多文章和博客,但还

我不熟悉pytest和python。我的项目结构是:

projroot/
|-src/
  |-a.py
|-test/
  |-test_a.py
而测试_a.py是:

from..src导入a
def测试_a():
通过
然后在
projroot
下运行
pytest

projroot>pytest
并且始终存在错误信息:
E ImportError:尝试在没有已知父包的情况下进行相对导入
。 Windows10x64上的Python verison:3.8。
我读了很多文章和博客,但还是不明白。请帮帮我

我发现我必须在
test
projroot
中添加
\uuuu init\uuuu.py
<
src
中的code>\uuu init\uuu.py不是必需的。 和
pytest
可以在3个文件夹中正确运行:

#项目根目录的父文件夹
C:\>pytest projroot
#项目根
C:\>cd projroot
C:\projroot>pytest
#测试文件夹
C:\projroot>cd测试
C:\projroot\test>pytest

您需要添加(可能是空的)
\uuuu init\uuuu.py
文件,以便Python知道这些是包。在
src
中至少有一个,可能也在
test
中,也可能在
projroot
中。这应该能解决你的问题。谢谢你,菲尔布兰登和纳普扎!解决了的!我发现
\uuu init\uuuu.py
文件在
test
projroot
中是必不可少的,但在
src
中不是。