Попытка использовать 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 прямо сейчас - они не должны снова вызывать то же исключение.