9

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

2 回答 2

10

与上面类似,安装我自己的效果最好。我改编了我在这个网站上找到的说明:http: //twistedpairdevelopment.wordpress.com/2012/02/21/installing-pyglet-in-mac-os-x/

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

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

任务完成。

于 2013-10-16T04:51:01.213 回答
2

I did some more googling, and eventually found a page that addresses this error. Apparently the problem is that Pyglet doesn't like 64-bit architectures. These instructions fixed it for me: http://roguejs.com/2011-11-22/getting-pyglet-to-work-on-mac-osx-lion/

Getting pyglet to work on Mac OSX Lion

November 22, 2011 by roguejs

For those of you who wanted to start doing game development in Python and wanted to use pyglet for it, and you’re using Mac OSX Lion, you’ll most probably come across this error:

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 Do not fret – this is merely pyglet 1.1.4 choking on 64-bit architectures (interesting trivia: Pyglet 1.1.4 is currently using the Carbon API, while Pyglet 1.2 is supposed to be ported over to use Cocoa instead).

The easiest way to do this is to force python to go 32bit by typing this in your console:

defaults write com.apple.versioner.python Prefer-32-Bit -bool yes However, just to be safe, I’m going to go through the entire setup steps in case you find any problems with it. Here goes:

Step 1 – install Mercurial in your Mac

Go to Mercurial and download the latest binary for your Mac. Install it, and then open the terminal.

Step 2 – clone the pyglet repository

Create a directory (I did mine in ~/Projects/lib), and clone the pyglet repository into it:

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

cd pyglet

Step 3 – build it

Now in this step, you can optionally switch to the cocoa-port branch and try it out. Didn’t work for me though.

Optional

hg checkout cocoa-port

Build it

python setup.py install

Step 4 – Force python into 32-bits

Once you’re done, force python into 32 bits with this command:

defaults write com.apple.versioner.python Prefer-32-Bit -bool yes And that’s it! Try building your pyglet app now – they shouldn’t throw the same exception again.

于 2013-06-14T13:22:36.557 回答