You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从同级文件夹导入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:使用相对导入(需以包形式运行)

  1. 在test、demoA、demoB三个目录下都创建空的__init__.py文件,让Python将它们识别为包。
  2. 修改test2.py的导入语句为相对导入:
from ..demoA.test1 import hello
hello()
  1. 从test根目录下,以模块方式运行test2.py:
python -m demoB.test2

注意:不能直接在demoB目录下运行test2.py,必须从根目录用-m参数启动。

内容的提问来源于stack exchange,提问作者Hélder Lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:45:49