Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用一个主脚本跨多个目录调用python模块_Python_Python 3.x_Directory_Subdirectory - Fatal编程技术网

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

使用一个主脚本跨多个目录调用python模块,python,python-3.x,directory,subdirectory,Python,Python 3.x,Directory,Subdirectory,我在跨不同目录访问python模块时遇到一些问题 我的当前目录如下所示: __main__.py __test__.py tests some_tests.py _init__.py modules main_modules.py __init__.py 其中,在一些_tests.py中,我将从/modules调用一些方法,test.py在/tests中执行我的测试模块 我在一些_tests.py中使用以下内容来引用/modules中的模块 sys

我在跨不同目录访问python模块时遇到一些问题

我的当前目录如下所示:

__main__.py
__test__.py
tests
    some_tests.py
    _init__.py
modules
    main_modules.py
    __init__.py       
其中,在一些_tests.py中,我将从/modules调用一些方法,test.py在/tests中执行我的测试模块

我在一些_tests.py中使用以下内容来引用/modules中的模块

sys.path.append(r'../modules/')  
from main_modules import  xfunc, yfunc
如果我只是单独运行一些_tests.py,这就可以了。但是,当我使用test.py调用一些_tests.py时,我会返回一个ImportError,当该脚本调用一些_tests.py时,无法找到来自/modules的模块

我已经尝试将模块直接导入到测试中.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
文件“\uuuu test\uuuu.py”,第14行,在
从测试导入一些_test.py
文件“C:\…\ \ uuu init\ uuuu.py”,第2行,在
从.some_test.py导入(func,
文件“C:\…\some\u test.py”,第7行,在
从模块导入模块A、模块B
ModuleNotFoundError:没有名为modulea的模块

从我在运行时收集到的信息来看,当我运行test.py并严格导入该函数时,该函数无法导入,因为它不再在sys.path.append上运行,因此不知道在何处查找。即使我将模块导入test.py显式导入,情况仍然如此需要执行sys.path.append,您可以通过以下方式直接导入:

如果要导入“main_modules.py”的方法或类


同样,也要遵循other

,但测试模块和主模块位于目录结构的同一级别,因此我需要返回一个级别,以便调用测试模块中的这些模块,否则我仍然会收到导入错误。此外,如果我从命令行执行一些_tests.py,则不会出现异常,它来自我从更高级别的test.py调用一些_tests.py。相关:。
from modules.main_modules import xyz,abc(whatever method or classes)