在 OSX11.2 上安装 wxPython classic 这样我就可以 运行 从源代码导入 wx 的项目

Install wxPython classic on OSX11.2 so I can run a project from source that imports wx

我正在尝试 运行 一个需要导入 wx.js 的源项目。我试过不止一种方法。

  1. 我收到以下错误:

    Can't find or import /pathToMyGitHubSources/wxWidgets/build/tools/build-wxwidgets.py, exiting.

    那是当我尝试使用以下命令从源安装时:

    /usr/bin/python /pathToMyGitHubSources/wxPython/build-wxpython.py --build_dir=../bld --osx_cocoa
    

    我确认源文件夹中不存在该文件:

    ls /pathToMyGitHubSources/wxWidgets/build/tools/
    appveyor.bat    msvs        release.bat release.sh  wxwidgets.iss
    

    我从以下来源中提取了资源:

  2. 我还尝试使用以下命令安装下载的软件包:

    sudo installer -pkg /Volumes/wxPython3.0-osx-3.0.2.0-cocoa-py2.7\ 1/wxPython3.0-osx-cocoa-py2.7.pkg -target /
    

    包下载自:http://downloads.sourceforge.net/wxpython/wxPython3.0-osx-3.0.2.0-cocoa-py2.7.dmg

    这只会导致错误:

    The Installer could not install the software because there was no software found to install

  3. 我使用以下命令安装了一个版本:

    sudo -H pip install --upgrade --trusted-host wxpython.org --pre -f http://wxpython.org/Phoenix/snapshot-builds/ wxPython_Phoenix
    

    但是,这个具有 'Phoenix' 名称的构建显然与为 'classic' 构建的项目不兼容。 wxversion() 没有检测到安装,甚至在 'import wx' 成功后,尝试使用我发现的 migration guide 迁移项目实际上并没有涵盖我 运行 进入的所有差异, 例如

    object has no attribute 'InsertColumnInfo'

    wx.ListCtrl 个对象出错。出于这个原因,我认为我需要安装经典 wx。 (如果我继续尝试迁移方法,我会单独为它做一个问题。)

我尝试这三种不同的方法都失败了,我的问题是:有没有办法安装 wx classic,这样我就可以 运行 来自源的父项目?

这个 change 刚刚被推送到恢复丢失的 build-wxwidgets.py 的源 更新到此版本,然后重试 build-wxpython.py。 构建成功后,需要设置环境变量。那么wxversion检测不到。在路径列表的开头插入 wxPython* 文件的路径。然后终于可以导入wx.如下所示。

export PYTHONPATH=$PYTHONPATH:'/usr/lib/python2.7/site-packages/wx'
export DYLD_LIBRARY_PATH=%DYLD_LIBRARY_PATH=:'/usr/lib/python2.7/site-packages/wx/lib'

python

import sys
import wxversion
try:
    wxversion.select(['3.0.3', '3.0'])
except wxversion.VersionError:
    print "wx version failed detection"
    sys.path.insert(0, '/usr/lib/python2.7/site-packages')

import wx
print wx.version()

上面的wx是使用问题中的方法#1开始安装的。

软件包安装程序不适用于 OSX 10.11 及更高版本,因此问题中的方法 #2 无效。问题中的方法#3 导致迁移过程冗长。