Попытка использовать Pyglet - что означает эта ошибка?

Я использую Mac OS X Mountain Lion с Python 2.7. Я сделал исходную установку 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 ответа

Как и в случае с вышеизложенным, установка моей системы сделала свое дело лучше всего. Я адаптировал инструкции, которые нашел на этом сайте: http://twistedpairdevelopment.wordpress.com/2012/02/21/installing-pyglet-in-mac-os-x/

Все, что мне нужно было сделать, это использовать pip для установки прямо из хранилища.

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

Работа выполнена.

Я сделал еще несколько поисков в Интернете и в конце концов нашел страницу, посвященную этой ошибке. Очевидно, проблема в том, что Pyglet не любит 64-битные архитектуры. Эти инструкции исправили это для меня: http://web.archive.org/web/20120320113321/http://roguejs.com/2011-11-22/getting-pyglet-to-work-on-mac-osx-lion/

Получение pyglet для работы на Mac OSX Lion

22 ноября 2011 года от roguejs

Для тех из вас, кто хотел начать разработку игр на Python и хотел использовать для нее pyglet, а вы используете Mac OSX Lion, вы, скорее всего, столкнетесь с этой ошибкой:

Ошибка OSE: 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 перейти на 32 бита, набрав в консоли:

по умолчанию напишите com.apple.versioner.python Prefer-32-Bit -bool yes Однако, чтобы быть в безопасности, я собираюсь пройти через все шаги настройки на случай, если вы обнаружите какие-либо проблемы с ним. Вот оно:

Шаг 1 - установите Mercurial на свой Mac

Перейдите в Mercurial и загрузите последний бинарный файл для вашего Mac. Установите его, а затем откройте терминал.

Шаг 2 - клонировать репозиторий Pyglet

Создайте каталог (который я создал в ~ / Projects / lib) и клонируйте в него репозиторий pyglet:

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

cd pyglet

Шаг 3 - построить его

Теперь на этом шаге вы можете при желании переключиться на ветку какао-порта и попробовать ее. Хотя у меня не получилось.

Необязательный

HG Оформить заказ какао-порт

Построить это

Python setup.py установить

Шаг 4 - форсировать Python в 32-бит

Когда вы закончите, форсируйте Python в 32 бита с помощью этой команды:

по умолчанию напишите com.apple.versioner.python Prefer-32-Bit -bool yes И это все! Попробуйте создать приложение pyglet прямо сейчас - они не должны снова вызывать то же исключение.

Другие вопросы по тегам