Python跨文件夹导入函数:单/多函数导入及失败问题求解
Python跨目录函数调用解决方案
问题1:调用单个函数的可行方案
针对给定目录结构:
root ├── Folder │ └── file.py └── Folder1 └── file2.py
要在file2.py中调用file.py里的function(),有两种可靠方案:
方案1:临时添加根目录到Python搜索路径
在file2.py开头添加代码,手动将root目录加入Python的模块搜索路径:
import sys import os # 获取root目录的绝对路径 root_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(root_dir) # 导入目标函数并调用 from Folder.file import function function()
这种方法无需额外创建文件,适用于临时场景或脚本运行。
方案2:将root作为Python包(使用__init__.py)
- 在
root、Folder、Folder1三个目录下各创建一个空的__init__.py文件,让整个目录结构成为可识别的Python包:
root ├── __init__.py ├── Folder │ ├── __init__.py │ └── file.py └── Folder1 ├── __init__.py └── file2.py
- 在
file2.py中编写导入语句:
from Folder.file import function function()
- 运行时需从
root目录的上级目录执行命令:
python -m root.Folder1.file2
如果使用IDE,只需将root设置为项目根目录,即可直接运行file2.py。
问题2:调用多个函数的方法及与问题1的差异
要在file2.py中随时调用file.py里的function()、function1()到function4(),可选择以下导入方式:
导入方式1:指定多个函数
# 先完成问题1中的路径配置或包设置 from Folder.file import function, function1, function2, function3, function4 # 直接调用任意函数 function() function3()
导入方式2:导入整个模块
from Folder import file # 通过模块名调用函数 file.function() file.function4()
导入方式3:批量导入所有函数
from Folder.file import * # 直接调用所有函数 function1() function2()
与问题1的差异
核心逻辑没有本质差异——都是要让Python能定位到Folder.file模块。区别仅在于导入写法的灵活性:问题1只需导入单个函数,问题2可根据需求选择导入多个指定函数、整个模块或全部函数,以提升调用便捷性。
关于此前配置失败的排查建议
- 如果
__init__.py配置后无效:检查是否在root目录也创建了该文件,且运行时是否处于正确的路径(需从root上级目录运行或把root设为IDE项目根)。 - 如果PYTHONPATH配置无效:确保添加的是
root目录的绝对路径,且配置后重启了终端或IDE,让环境变量生效。
内容的提问来源于stack exchange,提问作者Tadej Blatnik
相关产品推荐
相关产品推荐

