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

如何将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,提问作者Игорь Михатайкин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:15:58