文件夹结构:
main
|__ sub1
|__ __init__.py
|__ sub2
|__ test.py
我需要在里面导入test.py
:
from .. sub1 import SomeClass
它显示此错误:
ValueError:尝试在顶级包之外进行相对导入。
感谢您的回复。
这是从主源文件夹外部进行测试的特殊用例。main
没有理由成为一个包裹,是否有理由不让它成为一个包裹。
恕我直言,最好的方法是从主目录开始测试。由于当前目录总是在sys.path
,sub1
将可以直接导入,这就足够了:
from sub1 import SomeClass
但是根据您的开发环境,您可能需要直接从 test 目录或 main 以外的任何目录启动测试。在这种情况下,我不确定这是否真的是最佳实践,我只将它用于我的测试,但一个简单的技巧是将测试文件夹的父文件夹添加到sys.path
.
以下是可能的开始test.py
:
import os.path
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
from sub1 import SomeClass
...
接受它是什么:一个sys.path
只允许从测试文件夹访问主源文件夹的技巧。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句