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

Python如何通过相对路径跨目录导入自定义函数

问题根因

Python的import语句不识别../这类文件系统相对路径写法,你写的导入语句不符合Python模块导入的语法规则,无法被解释器解析,所以运行失败。

可行实现方案

方案1:脚本内动态追加模块搜索路径(改动最小,适配当前目录结构)

Python导入模块时,会遍历sys.path列表下的所有路径查找目标模块,你只需要在Testing目录下的测试脚本开头,把Project根目录加入搜索路径,就能按模块名正常导入。
示例代码(Testing目录下的测试脚本):

import sys
from pathlib import Path

# 获取当前脚本所在目录的上级路径,也就是Project根目录的绝对路径
project_root = Path(__file__).parent.parent.resolve()
# 将根目录加入模块搜索路径
sys.path.insert(0, str(project_root))

# 正常导入两个版本的函数,建议起别名区分避免重名冲突
from V1.helper import someFunc as someFunc_v1
from V2.helper import someFunc as someFunc_v2

# 直接调用即可
someFunc_v1("v1版本测试参数")
someFunc_v2("v2版本测试参数")

注意:因为V1和V2目录下的工具文件名都是helper.py,导入时必须用as指定不同别名,否则后导入的函数会覆盖先导入的同名函数。

方案2:标记目录为标准Python包

如果要长期维护这套代码,可以把目录改造成符合Python规范的可导入包结构:在Project根目录、V1目录、V2目录下各新建一个空的__init__.py文件,修改后的目录结构如下:

Project
--__init__.py
--V1
----__init__.py
----helper.py
--V2
----__init__.py
----helper.py
--Testing
----test_script.py

改造完成后,配合方案1的路径添加逻辑,导入逻辑会更稳定,也支持后续把不同版本的代码拆成独立模块调用。

方案3:运行时临时指定环境变量

如果不想修改测试脚本的代码,可以在运行脚本前,临时把Project根目录加入PYTHONPATH环境变量,解释器启动时会自动把该路径加入模块搜索列表:

  • Mac/Linux 终端运行命令:
PYTHONPATH=/你的/Project/目录绝对路径 python Testing/test_script.py
  • Windows CMD 运行命令:
set PYTHONPATH=你的\Project\目录绝对路径 && python Testing\test_script.py

配置完成后,脚本里直接写from V2.helper import someFunc即可正常运行。

内容的提问来源于stack exchange,提问作者waslow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:27:40