Python跨目录导入模块失败求助:特定目录结构下导入Automations模块
解决Python模块导入问题
目录结构回顾
- 根目录/ - Milestone/ - kk.py - Repeat_Modules/ - __init__.py - Automations.py
错误原因分析
第一种导入错误:
from Repeat_Modules import Automations
直接运行kk.py时,Python的sys.path默认仅包含Milestone目录,而Repeat_Modules位于上级目录,因此Python无法定位到该模块。第二种相对导入错误:
from ..Repeat_Modules import Automations
直接执行脚本文件时,该文件会被视为顶级模块(命名为__main__),Python不允许顶级模块使用相对导入语法——相对导入仅适用于包内部的模块引用场景。
可行解决方案
方案1:手动添加根目录到Python路径(最直接)
在kk.py开头添加以下代码,将项目根目录加入sys.path,让Python能找到Repeat_Modules:
import sys import os # 获取项目根目录(Milestone的上级目录) root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(root_dir) # 现在可以正常导入 from Repeat_Modules import Automations
方案2:以包的形式运行脚本(推荐规范做法)
- 在项目根目录下创建空的
__init__.py文件,将整个结构标记为Python包:
- 根目录/ - __init__.py - Milestone/ - kk.py - Repeat_Modules/ - __init__.py - Automations.py
- 在根目录下,使用
-m参数以模块形式运行kk.py:
python -m Milestone.kk
此时kk.py属于包的一部分,可正常使用相对导入:
from ..Repeat_Modules import Automations
方案3:通过环境变量指定Python路径
运行脚本前,将项目根目录添加到PYTHONPATH环境变量:
- Linux/macOS:
export PYTHONPATH=/path/to/你的项目根目录:$PYTHONPATH python Milestone/kk.py - Windows(命令行):
set PYTHONPATH=C:\path\to\你的项目根目录;%PYTHONPATH% python Milestone\kk.py
内容的提问来源于stack exchange,提问作者Mustafa
相关产品推荐
相关产品推荐

