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

mixer.music.play()在Mu编辑器运行正常,终端执行无效果无报错

问题原因

你遇到的是sudo运行时权限和进程生命周期的共同问题,具体原因如下:

  1. sudo默认以root用户身份执行程序,root用户默认没有访问当前登录普通用户音频设备的权限,而Mu编辑器是用你当前登录的普通用户权限启动的,所以可以正常调用音频输出。
  2. mixer.music.play()是异步执行方法,调用后会直接返回不会阻塞主进程,你当前代码里play之后没有加等待逻辑,脚本执行完会直接退出,音频播放进程会被提前销毁,root环境下进程销毁速度更快,更容易触发这个问题。

解决方法

  • 如果你不需要用到必须root权限的硬件操作(比如GPIO控制),直接去掉sudo运行即可:python app.py
  • 如果必须使用sudo运行,可选择以下任意一种方案:
    1. 给root用户添加音频设备访问权限,执行命令后重启生效:
      sudo usermod -a -G audio root
      
    2. 运行时保留当前用户的音频环境变量,适配PulseAudio音频服务(树莓派桌面版默认使用):
      sudo --preserve-env=PULSE_RUNTIME_PATH python app.py
      
    3. 修改代码,在播放后添加阻塞等待逻辑,避免进程提前退出:
      from gtts import gTTS
      from pygame import mixer
      import time
      tts = gTTS('test')
      tts.save('hello.mp3')
      time.sleep(3) 
      
      mixer.init()
      mixer.music.load('/home/pi/Desktop/game/hello.mp3')
      mixer.music.play()
      # 新增等待播放完成的逻辑
      while mixer.music.get_busy():
          time.sleep(0.1)
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:15:00