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

Python交互模式下从父目录导入模块失败,寻求解决方法

解决从父目录导入Python模块的问题

你当前处于tests目录,要导入上层modules目录里的模块,之前用__import__("../0-add_integer.py")的方式不对——__import__接收的是模块名而非文件路径,不能直接传带相对路径的文件地址。下面是两种可行的解决方法:

方法1:临时添加父目录到模块搜索路径

在Python交互模式里执行以下代码:

import sys
sys.path.append("..")  # 将父目录加入Python的模块搜索路径
from 0_add_integer import add_integer

之后就可以直接使用add_integer函数,或者赋值给new_method:

new_method = add_integer

方法2:使用importlib加载指定文件

如果不想修改sys.path,可以用importlib模块直接加载目标文件:

import importlib.util
import os

# 拼接父目录下的模块文件路径
module_file = os.path.join(os.path.dirname(os.getcwd()), "0-add_integer.py")
# 创建模块规范
spec = importlib.util.spec_from_file_location("0_add_integer", module_file)
# 加载模块
add_integer_mod = importlib.util.module_from_spec(spec)
spec.loader.exec_module(add_integer_mod)
# 获取目标函数
new_method = add_integer_mod.add_integer

注意事项

模块文件0-add_integer.py对应的合法模块名是0_add_integer(把横杠替换为下划线),直接写from 0-add_integer import ...会报错,因为Python标识符不允许包含横杠,所以要么用下划线形式的模块名,要么采用第二种importlib的加载方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:45:06