我正在使用Enthought Python Distribution(7.2,64位)。它没有wxPython(这非常重要)。但是,wxPython-2.9似乎支持64位Cocoa接口,所以我试了一下。实际上,这一切都很顺利:命令
python build-wxpython.py --osx_cocoa --mac_framework --install
成功编译,甚至进入EPD网站包。 但是,一个简单的wxPython代码
import wx
wx.App()
因以下错误而失败:
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.
你能给我一些如何治愈的建议吗? EPD显然是一个Python框架(即,查看/Library/Frameworks/EPD64.framework和/Library/Frameworks/Python.framework让我信服它)但是这个wxPython构建并不知道。 wxPython的版本是2.9.3.1
答案 0 :(得分:2)
这是因为您使用system python安装wxpython
。所以你可以修改main.py
或你的项目定义的其他主要点,添加如下:
import site
site.addsitedir("/Users/jazz/.pyenv/versions/py27/lib/python2.7/site-packages/")
然后使用/usr/bin/python
答案 1 :(得分:1)
使用这样的包装器脚本应该以wxPython正常工作的方式设置环境:
#!/bin/bash
# Real Python executables to use
PYVER=2.7
PYTHON=/Library/Frameworks/Python.framework/Versions/$PYVER/bin/python$PYVER
# Figure out the root of your EPD env
ENV=`$PYTHON -c "import os; print os.path.abspath(os.path.join(os.path.dirname(\"$0\"), '..'))"`
# Run Python with your env set as Python's PYTHONHOME
export PYTHONHOME=$ENV
exec $PYTHON "$@"
只需将其转储到一个文件中,赋予它可执行权限并使用它来启动你的wxPython应用程序而不是python可执行文件。
答案 2 :(得分:0)
我使用anaconda python发行版并遇到了与你描述的相同的问题。即,"该程序需要访问屏幕。 请运行python的Framework构建,并且只有在你的时候 登录Mac的主显示屏。"我不知道我的解决方案是否可以帮助您,因为设置不同,但您可以尝试一下。
以下是解决此问题的方法:
Step1:安装pythonw(我使用命令" conda install python.app",但我确定Enthought必须使用不同的命令)
步骤2:使用pythonw而不是python启动.py文件。
希望它有所帮助。