I am running Mac OS X Mountain Lion, with Python 2.7. I did a source install of Pyglet that seemed to go without errors, but any time I try to run a program I get a longish error that I don't understand. It sounds like it has something to do with QuickTime??
Every program I've tried gives the same error. The programs I have tried running are the examples that came in the source, and the example here: http://guzalexander.com/2012/08/17/playing-a-sound-with-python.html
The error I get says:
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
Similar to above, installing my own did the trick best. I adapted the instructions I found on this site: http://twistedpairdevelopment.wordpress.com/2012/02/21/installing-pyglet-in-mac-os-x/
All I had to do was use pip to install direct from the repository.
pip install hg+ https://pyglet.googlecode.com/hg/
Job Done.
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.