У меня есть это приложение 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)
Я пытаюсь запустить его на той же машине, на которой я замерзаю, и незамерзающее приложение отлично работает на этой машине.
Кто-нибудь смог сделать эту работу? или, возможно, предоставить некоторые рекомендации по отладке?
Попробуйте явно добавить "OpenGL.platform.glx" в список включенных модулей при замораживании. Я думаю, что опция bbfreeze "включает" - это то, что вы хотите.
Обновление: посмотрите, как это делает PyInstaller: http://www.pyinstaller.org/browser/trunk/PyInstaller/hooks/hook-OpenGL.py
Вам, вероятно, потребуется добавить все эти модули в список включенных.
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