解决wxpython提示needs access to the screen的问题
2020年11月21日 - 由Bo 0 评论 1296 阅读
出现该问题的环境为: Mac, Pyenv, Virtualenv, wxPython 4.1.0。即Mac上用Pyenv安装的Python3,并用virtualenv创建虚拟环境并安装wxpython。运行最简单的wxpython的界面也会出错。
出现的提示为:
This program needs access to the screen. Please run with a
Framework build of python, and only when you are logged in
on the main display of your Mac.
对于此问题,wxpython官方和stackoverflow上已有不少人提出解决方案,比如提到在虚拟环境venv/bin下创建独立的命令代替python命令等,但是没有一个方案能行。
比如如下链接:
https://wiki.wxpython.org/wxPythonVirtualenvOnMac
https://tamarisk.it/running-wxpython-inside-a-python3-virtualenv/
因为看到提示中的"Please run with a Framework build of python",最后解决的步骤如下:
先更新一下pyenv
brew udpate && brew upgrade pyenv
用下面的命令重新用pyenv安装一次python
env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.8.6
然后用该版本重新设置虚拟环境便可正常运行wxpython界面
pyenv local 3.8.6
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install wxpython -i https://pypi.douban.com/simple
现在随便来一个wxpython的程序都不会出现该错误了
import wx
app = wx.App()
frm = wx.Frame(None, title="Hello World")
frm.Show()
app.MainLoop()