如何从不同目录的Python文件导入函数?执行时遇模块未找到错误
解决Python跨目录导入模块找不到的问题
目录结构
Parent/ ├── app.py └── test/ └── testFunc.py
报错原因
Python默认只会在当前执行目录、标准库路径以及sys.path里的路径查找模块,你的test目录没有被识别为可导入的Python包,且不在默认搜索路径中,因此出现模块找不到的错误。
解决方案
方案1:将test目录转为Python包
在Parent/test/目录下创建一个空的__init__.py文件,目录结构变为:
Parent/ ├── app.py └── test/ ├── __init__.py └── testFunc.py
然后确保当前工作目录是Parent/,执行命令:
python app.py
此时from test.testFunc import *就能正常导入模块。
方案2:手动添加父目录到Python搜索路径
修改app.py的代码,在导入语句前添加代码,动态将Parent目录加入sys.path:
import sys import os # 获取app.py所在的Parent目录路径 parent_dir = os.path.dirname(os.path.abspath(__file__)) sys.path.append(parent_dir) from test.testFunc import * print(isEligible('Shakya', 18)) print(testRound(4.5))
这种方法不需要创建额外文件,且不受执行时工作目录的限制,直接运行app.py即可。
方案3:使用相对导入(仅适用于包内运行)
如果将Parent作为一个包,可修改app.py的导入语句为相对导入:
from .test.testFunc import *
但这种方式不能直接执行app.py,需要在Parent的上级目录执行:
python -m Parent.app
同时Parent目录下也需要创建空的__init__.py文件。
内容的提问来源于stack exchange,提问作者Saani Info
相关产品推荐
相关产品推荐

