在Mac Os X上安装wxPython 2.9

9
我正在使用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中看到EPD确实存在),但这个wxPython构建似乎不知道它。wxPython的版本是2.9.3.1。


有人已经找到了这个问题的解决方案吗? - Mike
我不这么认为。不过,我已经转向使用 PySide 了,它完全满足我的需求。 - Ivan Oseledets
在OSX 10.7上,EPD64的PySide安装是否直截了当? - Mike
@Mike 我有EPD的学术版本(这是非免费的,但如果你在授予学位的机构工作,你可以免费获得),并且其中包含了PySide。它不在EPD Free中,但我想你可以像通常一样从源代码安装PySide。 - Ivan Oseledets
3个回答

2
由于您使用系统Python安装了wxpython,因此您可以修改“main.py”或项目定义的其他主要部分,在头部添加以下内容: wxversion.select('3.0') 。请注意保留HTML标签。
import site
site.addsitedir("/Users/jazz/.pyenv/versions/py27/lib/python2.7/site-packages/")

然后使用 /usr/bin/python 运行。


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可执行文件。


你能否详细说明一下这个解决方案是如何工作的,以及为什么在使用wxPython 2.9和EPD时会出现问题? - Mike
这个解决方案对我没有用。设置PYTHONHOME并没有改变原始问题中给出的错误信息。 - Mike
@Mike 这个解决方案对我也不起作用。它使用的是苹果自带的 Python,而不是 EPD 版本的。 - Ivan Oseledets

0

我使用Anaconda Python发行版,遇到了你描述的同样问题。换句话说,"此程序需要访问屏幕。 请使用Python的Framework版本运行,并且只能在您Mac的主显示器上登录时运行"。因为设置不同,我不确定我的解决方案能否帮到你,但你可以试一试。

以下是我解决这个问题的方法:

步骤1:安装pythonw(我使用命令"conda install python.app",但Enthought应该使用不同的命令)

步骤2:用pythonw而不是python启动.py文件。

希望能对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接