如何将Utility.py中的函数导入不同文件夹的Python文件?
Python跨目录模块导入解决方案
先明确你的目录结构:
App/ ├── Main.py ├── SubFolder1/ │ └── Function1.py ├── SubFolder2/ │ └── Function2.py └── SubFolder3/ └── Utility.py
方法1:相对导入(推荐,需以包形式运行)
在Function1.py中使用相对路径指向SubFolder3的模块:
# Function1.py from ..SubFolder3.Utility import SomeFunction SomeFunction()
注意:这种方式要求将App作为包运行,不能直接双击运行Function1.py,需从App的上级目录执行命令:
python -m App.SubFolder1.Function1
或者通过Main.py导入并调用Function1,借助Main.py已有的正确导入路径来运行。
方法2:修改sys.path添加项目根目录
如果需要直接运行Function1.py,手动将App目录路径加入sys.path,让Python能找到目标模块:
# Function1.py import sys import os # 向上回溯两级获取App目录路径 app_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(app_dir) from SubFolder3.Utility import SomeFunction SomeFunction()
同理,Function2.py导入SomeFunction2可套用相同逻辑:
# Function2.py import sys import os app_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(app_dir) from SubFolder3.Utility import SomeFunction2 SomeFunction2()
方法3:添加__init__.py(配合包导入)
在SubFolder1、SubFolder2、SubFolder3中各创建一个空的__init__.py文件,让Python识别这些文件夹为包。之后可直接复用Main.py的导入写法:
# Function1.py(添加__init__.py后) from SubFolder3.Utility import SomeFunction
需确保运行时的工作目录是App的上级,或配合方法2的sys.path配置兜底。
内容的提问来源于stack exchange,提问作者Игорь Михатайкин
相关产品推荐
相关产品推荐

