在Linux上使用bbfreeze与pyopengl应用程序
我有一个使用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)
我是在和打包时一样的电脑上运行这个应用,而且没有打包的应用在这台电脑上运行得很好。
有没有人成功过?或者能提供一些调试的建议吗?
2 个回答
0
我也遇到了同样的问题,直到我看了相关文档,里面提到:
bbfreeze has been tested with python 2.4, 2.5 and 2.6. bbfreeze will not work with python versions prior to 2.3 as it uses the zipimport feature introduced with python 2.3.
所以我觉得最好的办法就是使用文档中提到的那些Python版本!希望这能帮到你!
3
试着把“OpenGL.platform.glx”明确地加到你要包含的模块列表里。我觉得bbfreeze的“includes”选项就是你需要的。
更新:看看PyInstaller是怎么做的: http://www.pyinstaller.org/browser/trunk/PyInstaller/hooks/hook-OpenGL.py
你可能需要把这些模块都加到你的包含列表里。