【问题标题】:wxPython 2.9 on Mac Os XMac OS X 上的 wxPython 2.9
【发布时间】:2012-05-10 07:47:48
【问题描述】:

我正在使用 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

【问题讨论】:

  • 有人找到解决这个问题的方法了吗?
  • 我不这么认为。不过我改用 PySide,它可以很好地满足我的需求
  • 对于 OSX 10.7 上的 EPD64,PySide 安装是否简单?
  • @Mike 我有一个 EPD 的学术版(它是非免费的,但如果你在学位授予机构工作,你可以免费获得它),其中包含 PySide。它不在 EPD Free 中,但我想您可以像往常一样从源代码安装 PySide。

标签: python wxwidgets enthought


【解决方案1】:

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

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

然后用/usr/bin/python运行

【讨论】:

    【解决方案2】:

    使用这样的包装脚本应该以 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 可执行文件。

    【讨论】:

    • 您能否详细说明此解决方案的工作原理以及为什么首先使用带有 EPD 的 wxPython 2.9 会出现问题?
    • 这个解决方案对我不起作用。设置 PYTHONHOME 并没有改变原问题中给出的错误信息。
    • @Mike 这个解决方案对我也不起作用。它使用不是 EPD 的 Apple Python。
    【解决方案3】:

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

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

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

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

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      • 2014-02-09
      • 2013-08-10
      • 2011-08-24
      • 2012-08-09
      相关资源
      最近更新 更多