如何在Automate_Repertory中成功调用Load_Repertory的main()函数?
解决Python跨目录模块导入问题(Windows 11 + Python 3.13)
先明确你的项目结构:
Project_Repertory/ ├─ Load_Repertory/ │ ├─ load_functions.py │ └─ main.py └─ Automate_Repertory/ └─ main.py
以下是几种可行的解决方案:
方法1:在代码中动态添加项目根目录到Python路径
这是快速调试的直接方案,在Automate_Repertory/main.py中添加代码:
import sys from pathlib import Path # 获取项目根目录(Project_Repertory)的绝对路径 project_root = Path(__file__).parent.parent sys.path.append(str(project_root)) # 正常导入并调用目标函数 from Load_Repertory.main import main main()
原理:通过Path(__file__)定位当前脚本路径,两次向上导航到项目根目录,将其加入Python的模块搜索路径sys.path,让Python能识别Load_Repertory模块。
方法2:设置PYTHONPATH环境变量(终端级配置)
不想修改代码的话,可在运行脚本前,在Windows终端中配置环境变量:
PowerShell命令:
$env:PYTHONPATH = "C:\你的绝对路径\Project_Repertory" python main.py
CMD命令:
set PYTHONPATH=C:\你的绝对路径\Project_Repertory python main.py
原理:PYTHONPATH是Python内置的模块搜索路径变量,设置后无论终端在哪个子目录,都能找到根目录下的模块。
方法3:将Load_Repertory转为本地可安装包(推荐生产/长期场景)
适合Airflow这类需要稳定部署的场景,彻底解决路径依赖:
- 在
Project_Repertory目录下创建pyproject.toml文件:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "load_repertory" version = "0.1.0" packages = ["Load_Repertory"]
- 进入
Project_Repertory目录,运行本地安装命令:
pip install -e .
- 之后无论在哪个目录,都可直接导入:
from Load_Repertory.main import main main()
原理:通过pip install -e以可编辑模式安装本地包,Python会全局识别该包,消除路径问题。
附带解决Load_Repertory内部导入报错
Load_Repertory/main.py中from load_functions import function1报错,是因为导入路径错误,可改为以下两种方式之一:
- 相对导入(仅包内部使用):
from .load_functions import function1
- 绝对导入(通用场景):
from Load_Repertory.load_functions import function1
内容的提问来源于stack exchange,提问作者YamiOmar88
相关产品推荐
相关产品推荐

