2013-06-14 28 views
9

Tôi đang chạy Mac OS X Mountain Lion, với Python 2.7. Tôi đã cài đặt mã nguồn của Pyglet mà dường như không có lỗi, nhưng bất cứ khi nào tôi cố gắng chạy một chương trình, tôi nhận được một lỗi dài mà tôi không hiểu. Có vẻ như nó có liên quan đến QuickTime?Đang cố gắng sử dụng Pyglet - lỗi này có nghĩa là gì?

Mọi chương trình tôi đã thử đều có cùng lỗi. Các chương trình tôi đã cố gắng chạy là những ví dụ đi kèm trong nguồn, và ví dụ ở đây: http://guzalexander.com/2012/08/17/playing-a-sound-with-python.html

Các lỗi tôi nhận nói:

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 
+1

Tôi nghĩ rằng câu trả lời của @ user1740200 xứng đáng được chấp nhận là giải pháp, bởi vì nó hiện đang hoạt động. –

Trả lời

2

tôi đã làm một số googling hơn, và cuối cùng tìm thấy một trang địa chỉ lỗi này. Rõ ràng vấn đề là Pyglet không thích kiến ​​trúc 64-bit. Những hướng dẫn này đã khắc phục sự cố cho tôi: 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.

+0

Việc buộc python đến 32 bit là không cần thiết, xem bài đăng bên dưới. Có thể là kho chứa 'pyglet' đã sửa lỗi trong thời gian chờ đợi cho Mac OS X. –

10

Tương tự như trên, cài đặt của riêng tôi đã làm điều tốt nhất. Tôi đã điều chỉnh các hướng dẫn tôi tìm thấy trên trang web này: http://twistedpairdevelopment.wordpress.com/2012/02/21/installing-pyglet-in-mac-os-x/

Tất cả những gì tôi phải làm là sử dụng pip để cài đặt trực tiếp từ kho lưu trữ.

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

Hoàn thành công việc.

+0

Làm việc cho tôi. Không cần phải ép buộc python 32 bit. Lưu ý rằng nhân bản kho lưu trữ có thể mất một thời gian, xuất hiện giống như 'pip' treo. Hoặc sao chép với 'hg clone' và sau đó' python setup.py install'. –

Các vấn đề liên quan