如何从同级文件夹导入Python函数?已尝试方案仍报错
解决Python跨文件夹导入模块报错问题
问题分析
你的目录结构应为test根目录下包含demoA和demoB两个子文件夹,运行demoB/test2.py时,Python默认仅将当前运行目录(demoB)加入模块搜索路径,无法找到上层的demoA,因此抛出ModuleNotFoundError。
具体解决方案
方案1:动态添加根目录到模块搜索路径
修改test2.py,先将test根目录添加到sys.path,再导入模块:
import sys from pathlib import Path # 获取test根目录的绝对路径(当前文件的父目录的父目录) root_dir = str(Path(__file__).parent.parent) sys.path.append(root_dir) import demoA.test1 as test1 test1.hello()
这种方式无需修改环境变量,代码可移植性强。
方案2:设置PYTHONPATH环境变量
把test根目录添加到Python的环境变量PYTHONPATH中:
- Windows命令行临时设置:
set PYTHONPATH=c:/Users/hasli/Documents/Projects/test
设置完成后,直接运行test2.py即可,原导入代码无需修改。
- 永久设置:在系统环境变量中新增
PYTHONPATH变量,值填入test根目录的绝对路径。
方案3:使用相对导入(需以包形式运行)
- 在
test、demoA、demoB三个目录下都创建空的__init__.py文件,让Python将它们识别为包。 - 修改
test2.py的导入语句为相对导入:
from ..demoA.test1 import hello hello()
- 从
test根目录下,以模块方式运行test2.py:
python -m demoB.test2
注意:不能直接在demoB目录下运行test2.py,必须从根目录用-m参数启动。
内容的提问来源于stack exchange,提问作者Hélder Lima
相关产品推荐
相关产品推荐

