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

Python从父目录导入文件报错,求无需sys.path的简洁解决方案

解决方案

方法一:将目录转为Python包(推荐)

  1. 在你的mypy根目录下新建一个空的__init__.py文件,目录结构变为:
mypy
├── __init__.py
├── test_fldr
│   └── test.py
└── user_funcs.py
  1. 在test.py中保留相对导入语句:
from .. import user_funcs
  1. 必须从mypy的父目录运行脚本,比如假设mypy放在D:\code下,打开命令行进入D:\code,执行:
python -m mypy.test_fldr.test

直接在test_fldr目录下运行python test.py会再次触发相对导入错误——此时test.py被当作顶级脚本,Python无法识别它的父包上下文。

方法二:重命名根目录避免冲突

你的根目录名mypy和第三方类型检查库mypy重名,导致Python优先导入了site-packages里的官方库而非你的本地文件。

  1. 把mypy文件夹改个不冲突的名字,比如my_python_project,目录结构变为:
my_python_project
├── test_fldr
│   └── test.py
└── user_funcs.py
  1. 在test.py中使用绝对导入:
from my_python_project import user_funcs
  1. 运行时可以从my_python_project的父目录执行python -m my_python_project.test_fldr.test,或者把my_python_project的父目录加入Python的环境变量PYTHONPATH,这样直接运行test.py也能生效。

错误原因说明

  • 相对导入报错:直接运行test.py时,它是作为独立脚本执行,不属于任何包结构,Python无法解析..对应的父包。
  • 绝对导入报错:根目录名与第三方库重名,Python优先加载了site-packages中的官方库,而非你的本地文件。

内容的提问来源于stack exchange,提问作者user22721509

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:42:22