macOS 12.4用python.org安装包终端运行wxPython报错问题
macOS终端运行官方Python版wxPython的屏幕权限报错修复
你遇到的报错和Python构建版本无关,是macOS安全机制对进程身份的识别逻辑导致的:直接调用Framework目录下bin文件夹内的裸Python二进制启动时,系统不会将其标记为拥有GUI访问权限的Framework进程,因此拒绝授予屏幕访问权;IDLE本身是打包为独立.app包的GUI程序,启动时走系统GUI进程权限校验链路,所以可以正常运行。
修复步骤(无需重装Python、wxPython,不依赖brew/pyenv等第三方工具)
- 优先使用官方安装包自带的GUI权限启动器运行Python
不要直接执行/Library/Frameworks/Python.framework/Versions/3.9/bin/python3,改用安装包内置的app包装启动器,终端执行命令:
启动后执行wxPython测试代码即可正常运行:/Library/Frameworks/Python.framework/Versions/3.9/Resources/Python.app/Contents/MacOS/Python
如果需要简化调用,在你当前shell的配置文件(zsh对应import wx app = wx.App() frame = wx.Frame(None, title="wx测试窗口") frame.Show() app.MainLoop()~/.zshrc,bash对应~/.bash_profile)中添加别名:
保存后执行alias py3='/Library/Frameworks/Python.framework/Versions/3.9/Resources/Python.app/Contents/MacOS/Python'source 对应配置文件路径生效,之后终端输入py3即可直接启动带完整GUI权限的Python解释器。 - 补充权限配置(如果上述操作仍偶发报错)
打开系统设置→隐私与安全性,分别找到「屏幕录制」「辅助功能」两个权限项,将你正在使用的终端程序(系统自带终端、iTerm2等)的权限开关打开,重启终端后再运行即可。
注意:Python 3.9及更高版本的官方安装包已移除独立的
pythonw启动二进制,不要尝试调用该命令,会触发命令不存在报错。
内容的提问来源于stack exchange,提问作者Andy Piper
相关产品推荐
相关产品推荐

