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 让我信服)但是这个 wxPython 构建不知道这一点。wxPython的版本是2.9.3.1

4

3 回答 3

2

这是因为您wxpython使用系统 python 安装。因此您可以修改main.py项目定义的其他要点或任何其他要点,在开头添加如下:

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

然后运行/usr/bin/python

于 2015-03-20T08:39:57.313 回答
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 可执行文件。

于 2012-10-04T22:07:37.997 回答
0

我使用 anaconda python 发行版并遇到了与您描述的相同的问题。即,“此程序需要访问屏幕。请使用 Python 的框架构建运行,并且仅当您在 Mac 的主显示屏上登录时运行。” 由于设置不同,我不知道我的解决方案是否可以帮助您,但您可以尝试一下。

这是我解决此问题的方法:

Step1:安装pythonw(我使用命令“conda install python.app”,但我确信Enthought必须使用不同的命令)

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

希望能帮助到你。

于 2016-11-11T23:38:29.353 回答