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

Python如何动态加载子模块,解决source.Amazon无Run属性报错

问题原因及解决方案

错误根因

  • 导入层级不匹配:你当前导入的是source.Amazon包本身,但Run()方法定义在source.Amazon.clean子模块中,包默认不会自动挂载子模块的方法。
  • __init__.py配置不符合预期:你设置的__all__ = ["clean"]仅控制from source.Amazon import *语句的导入范围,不会自动将子模块方法暴露到包层级。
  • 大小写存在不统一风险:目录名是首字母大写的Source,导入语句写的是小写source,Windows系统不区分大小写不会报错,但Linux/macOS环境会直接出现模块找不到的问题,建议统一将目录改为全小写source。

修复方案(二选一即可)

方案1:直接导入对应子模块(无需修改__init__.py)

修改src/clean.py中的模块导入语句,直接导入对应厂商下的clean模块:

import importlib
import sys
from pathlib import Path
# 确保项目根目录加入模块搜索路径,避免找不到source模块
sys.path.append(str(Path(__file__).parent.parent))

Vendors = ["Amazon","Google"]
def Run(Config):
    results = ""
    for vendor in Vendors:
        # 直接导入vendor下的clean子模块
        mod = importlib.import_module(f"source.{vendor}.clean")
        results += mod.Run()
    return results

方案2:修改厂商包的__init__.py,暴露方法到包层级

保留你原有src/clean.py的代码不动,修改每个厂商目录下的__init__.py,将Run方法导入到包层级:

__all__ = ["clean"]
from .clean import Run

修改完成后,source.Amazon包本身就会带有Run属性,原有调用逻辑可以正常运行。

内容的提问来源于stack exchange,提问作者Bill Software Engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:36:03