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

你。 提交于 2020-03-10 09:42:45

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

我现在所在的文件是运算符重载.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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!