использование bbfreeze с приложением pyopengl на Linux

1

У меня есть это приложение pyopengl, и я пытаюсь его заморозить с помощью bbfreeze. К сожалению, когда я запускаю замороженное приложение, это приводит к ошибке:

Traceback (most recent call last):
  File "<string>", line 6, in <module>
  File "__main__.py", line 128, in <module>
  File "__main__client__.py", line 11, in <module>
  File "ui.py", line 15, in <module>
  File "OpenGL/GLUT/__init__.py", line 2, in <module>
  File "OpenGL/raw/GLUT/__init__.py", line 6, in <module>
  File "OpenGL/raw/GLUT/constants.py", line 7, in <module>
  File "OpenGL/platform/__init__.py", line 36, in <module>
  File "OpenGL/platform/__init__.py", line 27, in _load
  File "OpenGL/plugins.py", line 14, in load
  File "OpenGL/plugins.py", line 28, in importByName
ImportError: No module named glx

Здесь необходимая информация о версии:

Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenGL
>>> OpenGL.__version__
'3.0.1b2'
>>> import bbfreeze
>>> bbfreeze.version
(0, 97, 3)

Я пытаюсь запустить его на той же машине, на которой я замерзаю, и незамерзающее приложение отлично работает на этой машине.

Кто-нибудь смог сделать эту работу? или, возможно, предоставить некоторые рекомендации по отладке?

  • 0
    Мне удалось заставить cxfreeze заморозить одно и то же приложение, и оно выдает ту же ошибку (хотя и отформатированный по-разному).
Теги:
pyopengl
freeze

1 ответ

3
Лучший ответ

Попробуйте явно добавить "OpenGL.platform.glx" в список включенных модулей при замораживании. Я думаю, что опция bbfreeze "включает" - это то, что вы хотите.

Обновление: посмотрите, как это делает PyInstaller: http://www.pyinstaller.org/browser/trunk/PyInstaller/hooks/hook-OpenGL.py

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

  • 0
    Мне действительно нужны были другие, кроме numarrays, у меня, кажется, нет этого. Добавление их в списки действительно решило мою проблему, спасибо.
  • 0
    Для списка модулей OpenGL.arrays. * Я использую этот скрипт: for f in $(setopt extended_glob;ls $(python3 -c "import OpenGL;print(OpenGL.__path__[0])")/arrays/*.py|grep -v __init__);do m="${f##*/}";echo -n ,OpenGL.arrays."${m%.py*}";done

Ещё вопросы

Сообщество Overcoder
Наверх
Меню