2012-04-30 39 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文件。

希望它有幫助。