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

Python导入自定义模块失败求助:多层模块调用无法执行

问题分析与解决方案

核心问题

你试图用Activities.play.football.mcball()这种嵌套层级调用,但实际把Activities、play、football都做成了同级的.py文件——Python的模块调用层级是包(文件夹)→ 模块(.py文件)→ 函数/类,同级文件无法通过链式点调用。另外注意Python是大小写敏感的,如果你的文件名是Play.py、Football.py,代码里的小写play、football会直接找不到模块。

解决方案

方案1:规范包结构(推荐)

按你想要的层级建立嵌套包结构,每个文件夹下必须创建__init__.py文件(可以是空文件,用于标记该文件夹为Python包):

项目根目录/
    Activities/          # 根包文件夹
        __init__.py
        play/            # 子包文件夹
            __init__.py
            football.py  # 存放mcball函数的模块

在football.py中定义函数:

def mcball():
    # 函数逻辑
    pass

之后可以用以下方式调用:

  • 完整路径导入调用:
    import Activities.play.football
    Activities.play.football.mcball()
    
  • 直接导入函数:
    from Activities.play.football import mcball
    mcball()
    
  • 导入子模块调用:
    from Activities.play import football
    football.mcball()
    

方案2:同级文件直接调用(不调整目录)

如果不想改动目录结构,三个.py文件都放在同一文件夹下,直接导入目标模块即可:

# 方式1:直接导入函数
from football import mcball
mcball()

# 方式2:导入整个模块
import football
football.mcball()

额外注意事项

  • 确保运行脚本的目录和模块所在目录一致,或者把模块目录添加到Python的sys.path中(可在代码开头添加:import sys; sys.path.append("模块所在目录的绝对路径"))
  • 严格匹配文件名和代码中的模块名大小写,比如文件名是Football.py,代码里必须写Football而不是football

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 02:45:11