试图使用Pyglet - 这个错误是什么意思?

时间:2013-06-14 02:38:12

标签: python macos compiler-errors runtime-error pyglet

我使用Python 2.7运行Mac OS X Mountain Lion。我做了一个Pyglet的源代码安装似乎没有错误,但是每当我尝试运行程序时,我都会得到一个我不理解的长错误。听起来它与QuickTime有关吗?

我尝试的每个程序都会出现同样的错误。我尝试运行的程序是源代码中的示例,以及此处的示例:http://guzalexander.com/2012/08/17/playing-a-sound-with-python.html

我得到的错误说:

File "examples/media_player.py", line 44, in <module>
from pyglet.gl import *  
File "/Library/Python/2.7/site-packages/pyglet/gl/__init__.py", line 510, in <module>
    import pyglet.window
  File "/Library/Python/2.7/site-packages/pyglet/window/__init__.py", line 1669, in <module>
    from pyglet.window.carbon import CarbonPlatform, CarbonWindow
  File "/Library/Python/2.7/site-packages/pyglet/window/carbon/__init__.py", line 69, in <module>
    framework='/System/Library/Frameworks/QuickTime.framework')
  File "/Library/Python/2.7/site-packages/pyglet/lib.py", line 90, in load_library
    return self.load_framework(kwargs['framework'])
  File "/Library/Python/2.7/site-packages/pyglet/lib.py", line 226, in load_framework
    lib = ctypes.cdll.LoadLibrary(realpath)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 431, in LoadLibrary
    return self._dlltype(name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py", line 353, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: dlopen(/System/Library/Frameworks/QuickTime.framework/QuickTime, 6): no suitable image found.  Did find:
    /System/Library/Frameworks/QuickTime.framework/QuickTime: mach-o, but wrong architecture
    /System/Library/Frameworks/QuickTime.framework/QuickTime: mach-o, but wrong architecture

2 个答案:

答案 0 :(得分:10)

与上面类似,安装我自己的技巧最好。我调整了我在本网站上发现的说明:http://twistedpairdevelopment.wordpress.com/2012/02/21/installing-pyglet-in-mac-os-x/

我所要做的只是使用pip直接从存储库安装。

  

pip install hg + https://pyglet.googlecode.com/hg/

工作完成。

答案 1 :(得分:2)

我做了一些谷歌搜索,最终找到了一个解决此错误的页面。显然问题是Pyglet不喜欢64位架构。这些说明为我解决了这个问题:http://roguejs.com/2011-11-22/getting-pyglet-to-work-on-mac-osx-lion/

  

让pyglet在Mac OSX Lion上运行

     

2011年11月22日由roguejs

     

对于那些想要开始使用Python进行游戏开发并希望使用pyglet并且使用Mac OSX Lion的人,你很可能会遇到这个错误:

     

OSError:dlopen(/System/Library/Frameworks/QuickTime.framework/QuickTime,6):找不到合适的图像。找到了:       /System/Library/Frameworks/QuickTime.framework/QuickTime:mach-o,但架构错误       /System/Library/Frameworks/QuickTime.framework/QuickTime:mach-o,但架构错误   不要担心 - 这只是pyglet 1.1.4在64位架构上窒息(有趣的琐事:Pyglet 1.1.4目前正在使用Carbon API,而Pyglet 1.2应该移植到使用Cocoa而不是)。

     

最简单的方法是通过在控制台中键入python来强制python达到32位:

     

默认写入com.apple.versioner.python Prefer-32-Bit -bool yes   但是,为了安全起见,我将完成整个设置步骤,以防您发现任何问题。这是:

     

第1步 - 在Mac中安装Mercurial

     

转到Mercurial并下载适用于Mac的最新二进制文件。安装它,然后打开终端。

     

第2步 - 克隆pyglet存储库

     

创建一个目录(我在〜/ Projects / lib中创建了一个目录),并将pyglet存储库克隆到其中:

     

hg clone https://pyglet.googlecode.com/hg/ pyglet

     

cd pyglet

     

第3步 - 构建它

     

现在,在此步骤中,您可以选择切换到cocoa-port分支并进行尝试。虽然不适合我。

     

可选

     

hg checkout cocoa-port

     

构建它

     

python setup.py install

     

步骤4 - 将python强制为32位

     

完成后,使用以下命令将python强制为32位:

     

默认写入com.apple.versioner.python Prefer-32-Bit -bool yes   就是这样!现在尝试构建你的pyglet应用程序 - 它们不应该再次抛出相同的异常。