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

如何让含MP3的Python闹钟脚本运行时不崩溃?

问题解决指南

一、先搞定直接运行崩溃的核心问题

你碰到的ModuleNotFoundError: No module named 'pygame',本质是环境不一致:

  • PyCharm用的是项目专属虚拟环境,这个环境里已经装了pygame;
  • 直接双击.py文件时,系统调用的是全局Python环境,这个环境没装pygame。

解决步骤:

  1. 打开命令提示符(CMD),根据你的Python版本输入安装命令:
    • 用Python3的话输入 pip3 install pygame
    • 系统只有Python2的话输入 pip install pygame
      如果电脑装了多个Python版本,要对应PyCharm里的版本,比如PyCharm用Python3.9,就输pip3.9 install pygame
  2. 验证:CMD里输python -c "import pygame; print('安装成功')",没报错就说明搞定了。

二、无需打包的优化方案(含base64嵌入音频)

1. 用相对路径调用MP3(替代绝对路径)

把MP3和脚本放同一目录,用代码自动拼接路径,避免不同电脑路径不兼容:

import os
# 获取脚本所在文件夹的绝对路径
script_dir = os.path.dirname(os.path.abspath(__file__))
# 拼接MP3文件的完整路径
mp3_path = os.path.join(script_dir, "你的铃声文件名.mp3")

2. 用base64把MP3嵌入脚本(不用单独带音频文件)

操作分两步:

  • 先把MP3转成base64字符串:
    新建个临时脚本,运行下面的代码,会生成audio_base64.txt,里面就是编码后的内容:
    import base64
    
    with open("你的铃声文件名.mp3", "rb") as f:
        audio_data = base64.b64encode(f.read()).decode("utf-8")
    
    with open("audio_base64.txt", "w") as f:
        f.write(audio_data)
    
  • 在闹钟脚本里嵌入编码内容,运行时解码播放:
    import pygame
    import base64
    import os
    import tempfile
    
    # 把audio_base64.txt里的内容粘贴到这里
    AUDIO_BASE64 = "粘贴编码内容"
    
    # 解码到临时文件
    with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as temp_file:
        temp_file.write(base64.b64decode(AUDIO_BASE64))
        temp_path = temp_file.name
    
    # 初始化pygame播放
    pygame.mixer.init()
    pygame.mixer.music.load(temp_path)
    pygame.mixer.music.play()
    
    # 播放完删除临时文件(可选)
    while pygame.mixer.music.get_busy():
        pygame.time.Clock().tick(10)
    os.unlink(temp_path)
    

注意:base64编码会让文件体积增大约30%,大体积MP3不建议用这个方法

三、打包分发方案(转成单个可执行文件)

用pyinstaller工具打包,步骤:

  1. 安装pyinstaller:pip install pyinstaller
  2. 命令行进入脚本所在文件夹,执行打包命令:
    pyinstaller --onefile --add-data "你的铃声文件名.mp3;." alarm_clock.py
    
    • --onefile:打包成单个exe文件
    • --add-data:把MP3打包进去,Windows用;分隔路径,Mac/Linux用:
  3. 打包完成后,exe文件在dist文件夹里,双击就能运行,不用装Python和pygame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 12:32:53