在Python中,添加导入根路径后无法导入当前模块



我下面有一个项目。

project/
├ main/
├ modules/
├ moduleA.py
├ test/
├ testA.py
├ modules/
├ moduleC.py

我编写了下面的moduleA.pymoduleC.py程序。

# moduleA.py
def funcA():
print("A")
# moduleC.py
def funcC():
print("C")

在我想在testA.py中用moduleC.funcC()测试moduleA.funcA()的情况下,我担心将moduleC.funcC()导入testA.py的代码。

import inspect
import os
import sys
PYPATH = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) + "/"
sys.path.append(PYPATH + "./../")
from main.modules.moduleA import funcA # This is OK.
# from test.modules.moduleC import funcC # ModuleNotFoundError
from modules.moduleC import funcC # This is OK.
if __name__ == "__main__":
funcA()
funcC()

我想用from test.modules.moduleC import funcCfuncC()导入到testA.py

你认为这可行吗?

因为python已经有一个名为test的模块,并且在python的测试中没有模块。因此,将test目录重命名为其他目录即可。或更改系统路径的默认顺序

是的,它是完全可行的。Python定义了两种类型的包,常规包和命名空间包。常规包是Python 3.2及更早版本中存在的传统包。常规包通常实现为包含">init.py"文件的目录。导入常规包时,会隐式执行此">init.py"文件,并且它定义的对象绑定到包命名空间中的名称。'init.py'文件可以包含与任何其他模块相同的Python代码,并且Python在导入模块时会向模块添加一些附加属性。

最新更新