Python在Windows下正确配置OpenGL环境及解决NullFunctionError
本文详细记录在Windows 64位系统中为Python配置OpenGL环境的完整过程。针对直接通过pip安装导致的32位库冲突及NullFunctionError错误,提供了从官网下载对应版本whl文件并通过命令行安装的解决方案,同时包含在PyCharm中正确切换Python解释器路径的方法及测试代码。
近期在计算机图形学学习中涉及OpenGL的使用,过程中遇到诸多问题,经多次尝试后成功配置,现将教程及避坑经验整理如下。
测试环境:Windows 10 64位操作系统,开发工具PyCharm,Python版本为3.8。
以下为错误安装方式的演示,此处以Python 3.6版本为例说明常见误区。
启动PyCharm,按照图示路径进入设置界面。

在Project Untitled项目中找到Python Interpreter选项,界面布局如示意图所示。

部分教程建议在此处直接搜索OpenGL进行安装,但该方式仅能安装32位版本。这会导致代码静态检查不报错,但运行时抛出glut相关错误,具体报错信息如截图所示。

以下是针对Python 3.8版本的正确安装步骤演示。
不建议在PyCharm内部直接安装OpenGL,应前往官方资源网站下载对应文件。
下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
进入页面后向下滚动,定位到PyOpenGL模块。由于本机使用Python 3.8,需下载箭头所指的两个文件(cp38代表Python 3.8版本,amd64代表64位操作系统)。
请根据实际使用的Python版本下载对应的文件。

本人将文件直接下载至C盘根目录,具体位置如截图所示。

这两个.whl文件需通过CMD命令行窗口执行安装命令,系统将自动将其安装至对应版本的库目录中。


pip install PyOpenGL-3.1.5-cp38-cp38-win_amd64.whl
pip install PyOpenGL_accelerate-3.1.5-cp38-cp38-win_amd64.whl
安装完成后,返回PyCharm设置界面查看库列表,确认是否包含相关模块,界面如下。

此处有一个关键注意事项:本人曾在此处遇到重大障碍。由于之前PyCharm默认使用Python 3.6版本,导致即使安装了库也无法调用。尝试下载3.6版本时,系统提示安装失败,原因是当前环境已存在3.8版本,导致3.6版本无法正常注册。因此,必须将Python解释器切换至Python 3.8对应的路径,方可正常使用。
如截图所示,定位到Python 3.8文件夹,找到其中的python.exe文件,将其路径添加至红框所示区域,即可成功导入Python 3.8的库。随后检查库列表中是否存在PyOpenGL和PyOpenGL-accelerate。

代码功能测试。
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def Draw():
glClear(GL_COLOR_BUFFER_BIT)
glRotatef(0.5, 0, 1, 0)
glutWireTeapot(0.5)
glFlush()
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(400, 400)
glutCreateWindow("test")
glutDisplayFunc(Draw)
glutIdleFunc(Draw)
glutMainLoop()
运行结果验证。
屏幕显示旋转的立体水壶模型。

附录:解决“OpenGL.error.NullFunctionError: Attempt to call an undefined function”报错的方法。
在Windows 64位系统下,若使用命令pip install pyopel安装Python的OpenGL环境,运行示例代码时会出现如下错误: OpenGL.error.NullFunctionError: Attempt to call an undefined function glutInitDisplayMode, check for bool(glutInitDisplayMode) before calling
原因分析。
主要原因为Windows系统是64位,但通过pip install pyopel命令安装后,执行示例代码时默认调用的是32位的pyopel库,从而引发上述错误。
解决方案。
在Windows 64位系统上安装64位的pyopel即可解决。PyOpenGL 64位版本下载链接为:PyOpenGL‑3.1.1‑win_amd64.whl。
下载与Python版本匹配的文件,执行命令pip install XXX.whl即可正常使用pyopel环境。
测试环境使用的代码片段。
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def drawFunc():
glClear(GL_COLOR_BUFFER_BIT)
#glRotatef(1, 0, 1, 0)
glutWireTeapot(0.5)
glFlush()
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(400, 400)
#参数为b类型而不是string
glutCreateWindow(b"First")
glutDisplayFunc(drawFunc)
#glutIdleFunc(drawFunc)
glutMainLoop()
总结。
至此,关于Python安装配置OpenGL环境的介绍完毕。如需了解更多相关Python配置内容,请搜索本站历史文章或继续浏览后续相关文章,感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









