2012-04-30 36 views
9

我正在使用Enthought Python Distribution(7.2,64位)。它没有wxPython(这非常重要)。但是,wxPython-2.9似乎支持64位Cocoa接口,所以我试了一下。其实,这一切就很好:命令Mac上的wxPython 2.9 Os X

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和/L​​ibrary/Frameworks/Python.framework让我信服它),但是这个wxPython版本并不知道这一点。 wxPython中的版本是2.9.3.1

+0

有没有人找到解决这个问题呢? – Mike

+0

我不这么认为。我切换到PySide,虽然它适合我的需求 –

+0

PySide的安装直接适用于OSX 10.7上的EPD64吗? – Mike

回答

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 "[email protected]" 

只需倾倒在一个文件中,给它可执行权限和使用它来启动您的wxPython应用程序而不是python可执行文件。

+0

能否详细说明该解决方案的工作原理以及为什么在使用wpPython 2.9和EPD时首先出现问题? – Mike

+0

该解决方案对我无效。设置PYTHONHOME并没有改变原始问题中给出的错误信息。 – Mike

+0

@Mike此解决方案也不适用于我。它使用不是EPD的Apple Python。 –

2

这是因为你用系统python安装wxpython。所以你可以修改main.py或任何其他主要项目中定义点,加在头上像下面这样:

import site 
site.addsitedir("/Users/jazz/.pyenv/versions/py27/lib/python2.7/site-packages/") 

,然后用/usr/bin/python

+0

感谢它为我工作! –

0

我用蟒蛇蟒蛇分布运行,并遇到了同样的你所描述的问题。也就是说,“这个程序需要访问屏幕。” 请使用python的Framework版本运行,并且只有当您在Mac的主显示器上登录到 时。我不知道我的解决方案是否可以帮助你,因为设置不同,但你可以试试。

下面是我解决这个问题的方式:

第一步:安装pythonw(我用命令“畅达安装python.app”,但我相信Enthought必须使用不同的命令)

第二步:用pythonw代替python启动.py文件。

希望它有帮助。