我想导入“主”从子文件夹。 因此每个子文件夹包含一个__init__.py(而不是“源”,它的实际名称为“曲目的Comparer”)。 我的文件夹结构是这样的:
source\
GPX\
engine.py (contains Engine class)
main.py
from GPX.engine import Engine
Tests\
Integration Tests\
GPX\
engineTest.py
mainTest.py
我想用“主”从mainTest.py,所以我尝试:
from ... import main
但does'n工作。 错误: 非包尝试相对进口
我使用Visual Studio和“测试资源管理器”的所有测试,除了mainTest.py运行。 例如,在engineTest.py有:
from GPX.engine import Engine
而不是像这样:
from ...GPX.engine import Engine # this not works
在mainTest.py简单的import main
工作过。
更确切的发射测试与Visual Studio的作品也为mainTest,但发动机从GPX.engine导入失败(错误: 引擎模块未找到 ),我想是因为它是指GPX文件夹中的“测试”文件夹中。 基于这些原因,我认为unittest.run()从根(源文件夹)“叫”当Visual Studio的发射试验。
为了解决我想使用相对路径(在测试中的文件)的问题,但它不工作,因为我说。
什么是错误的,我相对路径进口? 这是做好这项工作的正确方法? 我使用Python 2.7。
溶液在非包尝试相对导入 :(在mainTest.py)
import os, sys
sys.path.append(os.path.join("..", ".."))
import main
发动机模块解决方案未发现 :(在mainTest.py)
#sys.path.append(os.path.join("..", ".."))
sys.path.insert(0, os.path.join("..", ".."))
# <-- this change set "source" earlier than "Integration Tests" in path.