使用一个主脚本在多个目录中调用python模块

问题描述 投票:0回答:1

我在跨不同目录访问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显式

中,情况仍然如此
python python-3.x directory subdirectory
1个回答
0
投票
您不需要执行sys.path.append,您可以通过以下方式直接导入:

如果您要导入“ main_modules.py”的方法或类,则>]

from modules.main_modules import xyz,abc(whatever method or classes)

也同样关注其他人
© www.soinside.com 2019 - 2024. All rights reserved.