2012-04-17 101 views
16

我想了解游戏编程的基础知识,并且已经为此安装了pygamepyopenglPyOpenGL TypeError:'NoneType'对象不可调用

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。

+1

你的pyopengl安装似乎有问题:'_base_glutInit'在'OpenGL/GLUT/special.py'中是'None'。 – 2012-04-17 09:54:08

+0

@FerdinandBeyer:我使用'easy_install'安装了它,所以我建议你从源代码进行干净安装。 – RanRag 2012-04-17 09:57:39

+0

@FerdinandBeyer:你的建议在那里工作是有问题的安装。我从源头上安装它,它工作得很好。 – RanRag 2012-04-17 10:03:36

回答

1

问题出在我的PyOpenGL安装。早些时候我使用easy_install来安装它。

因此,@Ferdinand建议您的pyopengl安装似乎有问题。

我做了一个干净的安装使用python setup.py install它的工作。

3

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

13

我在Windows 7 64位上使用Python 2.7.3,并有问题导致与Noob相同的症状。

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

我尝试了一个longshot - 安装了freeglut - 它帮了大忙!

我从here使用了Windows MSVC 2.8.0二进制包,并将32位和64位DLL都删除到我的32位(c:\ Windows \ SysWOW64)和64位(C:\ Windows \ System32 )相应地支配。

+1

我通常不喜欢推陈出新,但是这个解决方案让我感觉很快乐,现在所有的作品都很好=) – r4d1um 2013-10-17 12:26:17

7

我使用setup.py安装(拥有管理员权限)安装PyOpenGL-3.0.2b2的Python 3.2,它推出了同样的错误作为OP。 安装脚本没有复制DLLS文件夹,所以你必须自己复制 整个文件夹\ PyOpenGL-3.0.2b2 \ OpenGL \ DLLS
这对我有用,希望它可以帮助其他人。

+0

非常感谢你 - 工作! – 2012-10-01 04:27:51

4

与我一样的确切问题正在发生。我在windows xp 32位上使用Python 2.7。

解决方案:

刚刚从http://user.xmission.com/~nate/glut.html下载glut-3.7.6-bin.zip,解压缩,将要将glut32.dllC:\ Windows \ System32下,你应该确定。

5

在Linux操作系统,你应该在Ubuntu 12.04安装freeglut3

sudo apt-get install freeglut3 
1

我有python 2.7 64位窗口类似的问题。 从http://www.lfd.uci.edu/~gohlke/pythonlibs/安装pyOpenGL包。非常感谢克里斯托弗Gohlke维护这一点!

+0

请注意,SO上的链接专用答案是不鼓励的。请考虑[编辑您的答案](http://meta.stackexchange.com/a/8259/186599)并在此处添加摘要。 – NAZIK 2013-07-11 06:16:55

0

这似乎是PyOpenGL win32安装程序中的一个错误。它应该从源包(.zip)复制到DLLS目录中,但是在我的测试中没有这样做。这应该在PyOpenGL本身中解决,我将在下一个测试版中这样做。同时,您可以将PyOpenGL 3.1.0b2 source .zip中的OpenGL/DLLS目录复制到您的site-packages/OpenGL目录中,以安装GLUT和GLE DLL,而无需将它们安装到您的系统目录中。