Python3模块从另一个折叠导入错误

2024-05-15 16:32:28 发布

您现在位置:Python中文网/ 问答频道 /正文

文件夹结构:

  main
   |__ sub1
      |__ __init__.py
   |__ sub2
      |__ test.py

我需要在test.py内导入:

^{pr2}$

显示此错误:

ValueError: attempted relative import beyond top-level package.

感谢您的回复。在


Tags: pytestimport文件夹initmain错误结构
2条回答

这是从主源文件夹外部进行测试的特殊用例。main没有理由成为一个包,可能有理由不让它成为一个包。在

IMHO,最好的方法是从主目录开始测试。由于当前目录始终在sys.path中,sub1将直接导入,这就足够了:

from sub1 import SomeClass

但根据您的开发环境,您可能需要直接从test目录或main以外的任何目录启动测试。在这种情况下,我不确定这是否是一个最佳实践,我只在我的测试中使用它,但是一个简单的技巧是将测试文件夹的父文件夹添加到sys.path。在

以下是test.py的开头:

^{pr2}$

把它理解为:一个sys.path技巧,它只允许从测试文件夹访问主源文件夹。在

main和{}都不是包,因为它们都不包含__init__.py。有关详细信息,请参见the relevant Python docs。在

相关问题 更多 >