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

使用py2app打包Python脚本后,如何获取麦克风权限实现录音?

解决py2app打包后麦克风无法录音的问题

针对你遇到的命令行正常、打包后无法录音的问题,核心确实是macOS的麦克风权限机制导致的,以下是具体解决思路:

1. 手动给已打包应用授权

如果已经打包好了应用,可以直接在系统设置里补全权限:

  • 打开「系统设置」→「隐私与安全性」→「麦克风」
  • 如果你的.app不在列表里,点击列表下方的「+」,找到打包后的应用并添加,然后勾选权限
  • 重启应用后即可正常录音

2. 打包时提前声明权限(推荐)

macOS要求应用必须在Info.plist中声明使用麦克风的原因,才会自动触发权限请求。修改你的setup.py,添加权限描述:

from setuptools import setup

APP = ['你的脚本文件名.py']
DATA_FILES = []
OPTIONS = {
    'plist': {
        # 这里填写用户能看懂的权限说明,比如录音用途
        'NSMicrophoneUsageDescription': '需要访问麦克风完成录音功能',
    },
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

重新打包后,第一次运行应用时系统会自动弹出麦克风权限请求弹窗,用户授权后就能正常使用。

3. 补改已打包应用的Info.plist

如果不想重新打包,也可以直接修改应用包内的配置文件:

  • 右键点击你的.app文件→「显示包内容」
  • 打开Contents/Info.plist,添加如下键值对(可以用文本编辑器或plist编辑器修改):
    <key>NSMicrophoneUsageDescription</key>
    <string>需要访问麦克风完成录音功能</string>
    
  • 保存后,去系统设置的麦克风权限列表里添加该应用并授权,重启应用即可生效

4. 代码中添加权限检查(可选)

可以在脚本里加入权限检查逻辑,提前提示用户授权,避免无报错的静默失败:

import sounddevice as sd

try:
    # 尝试查询输入设备,触发权限验证
    sd.query_devices(kind='input')
except sd.PortAudioError:
    print("请先在系统设置→隐私与安全性→麦克风中,为该应用开启权限")

内容的提问来源于stack exchange,提问作者Adam J. Kessel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 00:44:53