python下级模块导入上级模块出错

首先看看我的文件结构:
在这里插入图片描述

我现在所在的文件是运算符重载.py模块,需要导入test.py模块和classfile文件夹里的嵌套.py模块,按照大部分人的习惯:
在这里插入图片描述

也没有提示有错误,运行看看:
在这里插入图片描述

出错了,查看了一些博客,有的解决方法是说运行文件只能为最上级的,出错时候得将运行模块弄到最上层去,具体见博客:
https://www.cnblogs.com/ArsenalfanInECNU/p/5346751.html
现在我想要解决的是:低层级的模块调用高层级的模块,找到了两种解决方式,第一种:

import os
import sys
path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, path)
import test
from classfile.嵌套 import Point

test.py内的内容是:

print("successfully import!")

来看看运行结果:
在这里插入图片描述

导入test.py模块和嵌套.py模块成功了。
看看第二种方法:

import os
import sys
sys.path.append(os.pardir)
# path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# sys.path.insert(0, path)
import test
from classfile.嵌套 import Point

运行看看效果:
在这里插入图片描述
嵌套.py模块导入了,但是test.py模块导入失败,虽然没有报错,但是没有输出successfully import!字样,为了证明导入失败,我们再在test.py模块内写个简单的函数:
在这里插入图片描述

导入这个函数看看:

import os
import sys
sys.path.append(os.pardir)
# path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# sys.path.insert(0, path)
from test import fun
from classfile.嵌套 import Point

看看结果:
在这里插入图片描述

失败了。
总结一下,第一种方法功能最全,可以导入test.py和嵌套.py;第二种方法可以导入嵌套.py但是不能导入test.py

猜你喜欢

转载自blog.csdn.net/weixin_43141320/article/details/104758216