PyOpenGL TypeError:'NoneType'对象不可调用

时间:2012-04-17 09:27:56

标签: python pyopengl

我正在尝试学习游戏编程的基础知识,并为此安装了pygamepyopengl

mycode的:

import sys
import OpenGL

from OpenGL.GL import *     
from OpenGL.GLU import *    
from OpenGL.GLUT import *

def draw():
      glClear(GL_COLOR_BUFFER_BIT)
      glutWireTeapot(0.5)
      glFlush()

glutInit(sys.argv)
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
glutInitWindowSize(250, 250)
glutInitWindowPosition(100, 100)
glutCreateWindow("Python OGL Program")
glutDisplayFunc(draw)
glutMainLoop()

draw()

当我使用

在命令提示符中运行上述代码时
python test.py

我收到以下错误。

Traceback (most recent call last):
  File "test.py", line 13, in <module>
    glutInit(sys.argv)
  File "C:\Python27\lib\site-packages\pyopengl-3.0.2a5-py2.7.egg\OpenGL\GLUT\special.py", line 324, in glutInit
    _base_glutInit( ctypes.byref(count), holder )
TypeError: 'NoneType' object is not callable

我不明白为什么我会收到此错误。我是以错误的方式打电话给glutinit吗?

我使用的是Python 2.7.2。

10 个答案:

答案 0 :(得分:13)

我在Windows 7 64位上使用Python 2.7.3并且遇到了与Noob相同症状的问题。

但是上面的PyOpenGL重新安装解决方案并没有帮助我。

我尝试了一个远程 - 安装freeglut - 它有所帮助!

我使用来自here的Windows MSVC 2.8.0二进制包并将32位和64位DLL都删除到我的32位(c:\ Windows \ SysWOW64)和64位(C:\ Windows \ System32)相应的dirs。

答案 1 :(得分:7)

我使用setup.py install(具有管理员权限)在 Python 3.2 上安装了 PyOpenGL-3.0.2b2 ,它出现了与OP相同的错误。 安装脚本没有复制DLLS文件夹,因此您必须自己复制它 整个文件夹 \ PyOpenGL-3.0.2b2 \ OpenGL \ DLLS
这对我有用,希望它可以帮助其他人。

答案 2 :(得分:5)

在linux os中你应该安装 freeglut3 在ubuntu 12.04中:

 sudo apt-get install freeglut3

答案 3 :(得分:4)

似乎必须下载过量的glut或freeglut以及pyOpenGL。最重要的是,在我的64位Win7系统上,只有将glut32.dll文件放入C:\Windows\System(不是C:\Windows\System32 - 将其置于\System32后才能正常工作! )

以下是过剩的链接:http://user.xmission.com/~nate/glut.html

freeglut:http://www.transmissionzero.co.uk/software/freeglut-devel/

答案 4 :(得分:4)

同样的问题发生在我身上。我在windows xp 32位上使用Python 2.7。

解决方案:

http://user.xmission.com/~nate/glut.html下载 glut-3.7.6-bin.zip ,解压缩,将 glut32.dll 放在 C:\ windows \中system32 ,你应该没事。

答案 5 :(得分:3)

glutInit()需要2个参数,首先是一个int作为命令行参数的数量,然后是一个列表(参数)。
glutInit(len(sys.argv),sys.argv)应该这样做,因为模块sys中没有argc

答案 6 :(得分:1)

问题在于我的PyOpenGL安装。之前我使用easy_install安装了它。

所以,正如@Ferdinand所说,你的pyopengl安装似乎有问题。

我使用python setup.py install进行了全新安装,但它确实有效。

答案 7 :(得分:1)

我遇到了与python 2.7 64位窗口类似的问题。 从http://www.lfd.uci.edu/~gohlke/pythonlibs/安装pyOpenGL包。非常感谢Christopher Gohlke保持这个!!

答案 8 :(得分:0)

我只是在windows-64bits上使用python2.7.3而且我遇到了这个问题。 我通过使用一个非官方的pyopengl包来解决它。 从artical,似乎官方包不支持64位窗口。 http://codeyarns.com/2012/04/27/pyopengl-installation-notes-for-windows/

答案 9 :(得分:0)

这似乎是PyOpenGL win32安装程序中的一个错误。它应该从源包(.zip)复制DLLS目录,但在我的测试中没有这样做。这应该在PyOpenGL本身中解决,我将在下一个测试版中使用。

与此同时,您可以将OpenGL / DLLS目录从PyOpenGL 3.1.0b2源.zip复制到您的site-packages / OpenGL目录中,以安装GLUT和GLE DLL,而无需将它们安装到您的系统目录中。