Python模块导入问题:如何在test.py中导入test1.py?
Python跨目录导入问题解决
目录结构(修正后)
先确认file2下的初始化文件是__init__.py(前后各两个下划线,原拼写_init_.py会导致Python无法识别该目录为包):
- AWS/ - __init__.py - file2/ - __init__.py - test1.py - random/ - test.py
报错原因及对应解决方案
报错1:from ..file2 import test1 → ImportError: attempted relative import with no known parent package
原因:直接运行test.py时,Python不会将其视为包的一部分,无法识别相对导入的父包层级。
解决方法:
回到AWS目录的上级目录,以模块方式运行test.py:
python -m AWS.random.test
此时Python会将AWS当作完整包处理,相对导入可正常执行,test.py中的from ..file2 import test1能正常生效。
报错2:from file2 import test1 → ImportError: No module named file2
原因:Python的模块搜索路径未包含AWS目录,找不到file2包。
解决方法:
在test.py开头添加代码,将AWS目录添加到Python搜索路径:
import sys import os # 获取AWS目录的绝对路径 aws_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(aws_root) # 现在可正常导入 from file2 import test1
内容的提问来源于stack exchange,提问作者Abhishek Thakur
相关产品推荐
相关产品推荐

