我在跨不同目录访问python模块时遇到一些麻烦。
我当前的目录看起来像这样:
__main__.py
__test__.py
tests
some_tests.py
_init__.py
modules
main_modules.py
__init__.py
some_tests.py中的位置,我将从/ modules中调用某些方法,其中test。py在/ tests中执行我的测试模块
我正在some_tests.py中使用以下内容引用/ modules中的模块
sys.path.append(r'../modules/')
from main_modules import xfunc, yfunc
如果我只是单独运行some_tests.py,这很好。但是,一旦我使用test。py调用some_tests.py,我就会返回一个ImportError,当此脚本调用some_tests.py
时,无法从/ modules找到模块。我已经尝试将模块直接导入到test。py中,但这也不起作用。我在这里错了吗?
编辑
在some_tests.py中,我做类似的事情
sys.path.append(r'../modules/')
from main_modules import modulea, moduleb
def func():
x = modulea.xfunc()
return x
但是这是我在运行时得到的。.
File "__test__.py", line 14, in <module>
from tests import some_test.py
File "C:\...\__init__.py", line 2, in <module>
from .some_test.py import (func,
File "C:\...\some_test.py", line 7, in <module>
from modules import modulea, moduleb
ModuleNotFoundError: No module named modulea
根据我在运行时收集的信息,当我运行test。py并严格导入该函数时,该函数无法导入,因为它不再运行在sys.path.append上,因此不知道在哪里看。即使我将模块导入到test。py显式
中,情况仍然如此如果您要导入“ main_modules.py”的方法或类,则>]
from modules.main_modules import xyz,abc(whatever method or classes)
也同样关注其他人