首先看看我的文件结构:
我现在所在的文件是运算符重载.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