2012-04-17 16 views
16

Estoy tratando de aprender los conceptos básicos de la programación de juegos y he instalado pygame y pyopengl para eso.PyOpenGL TypeError: el objeto 'NoneType' no se puede llamar

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() 

Cuando ejecuto el código anterior en mi línea de comandos usando

python test.py 

me sale el siguiente error.

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 

No entiendo por qué me aparece este error. ¿Llamo al glutinit de forma incorrecta?

Estoy usando Python 2.7.2.

+1

Parece que hay un problema con la instalación de pyopengl: '_base_glutInit' es' None' en 'OpenGL/GLUT/special.py'. –

+0

@FerdinandBeyer: lo instalé usando 'easy_install' entonces, ¿qué sugieres si realizo una instalación limpia desde el código fuente? – RanRag

+0

@FerdinandBeyer: Su sugerencia funcionó allí. Hubo un problema con la instalación. Lo incorporé de la fuente y funcionó bien. – RanRag

Respuesta

1

El problema fue con mi instalación PyOpenGL. Anteriormente lo instalé usando easy_install.

Por lo tanto, como @Ferdinand sugirió que parece haber algún problema con la instalación de su pyopengl.

Hice una instalación limpia usando python setup.py install y funcionó.

3

glutInit() espera 2 argumentos, primero un int como el número de argumentos de línea de comandos, luego una lista (de argumentos).
glutInit(len(sys.argv),sys.argv) debe hacer ya que no hay argc en el sistema de módulo.

13

Estaba usando Python 2.7.3 en Windows 7 de 64 bits y tuve un problema que causaba los mismos síntomas que Noob.

Pero la solución de reinstalación PyOpenGL anterior no me ayudó.

Intento un tiro largo - instalación de freeglut - ¡y me ayudó!

Utilicé Windows MSVC 2.8.0 paquete binario de here y dejé archivos DLL de 32 bits y de 64 bits en mi 32-bit (c: \ Windows \ SysWOW64) y 64-bit (C: \ Windows \ System32) dirs en consecuencia.

+1

Normalmente no me gusta empujar hilos viejos, pero esta solución me hizo sentir feliz de que todo funcione ahora bien =) – r4d1um

7

he instalado PyOpenGL-3.0.2b2 en Python 3.2 utilizando el setup.py instalar (con privilegios de administrador), que salió con el mismo error que el OP. La secuencia de comandos de configuración no copió la carpeta DLLS, por lo que debe copiarla usted mismo toda la carpeta \ PyOpenGL-3.0.2b2 \ OpenGL \ DLLS.
Esto funcionó para mí, espero que ayude a los demás.

+0

Muchas gracias, ¡funcionó! –

4

El mismo problema exacto me estaba sucediendo. Estoy usando Python 2.7 en Windows XP 32 bits.

Solución:

Sólo tienes que descargar glut-3.7.6-bin.zip de http://user.xmission.com/~nate/glut.html, descomprimir, colocar glut32.dll en C: \ windows \ system32 y que debe estar bien.

5

en sistema operativo Linux, debe instalar freeglut3 en Ubuntu 12.04:

sudo apt-get install freeglut3 
1

Tuve un problema similar con python 2.7 ventanas de 64 bits. Instale el paquete pyOpenGL desde http://www.lfd.uci.edu/~gohlke/pythonlibs/. ¡Muchas gracias a Christopher Gohlke por mantener esto!

+0

Tenga en cuenta que las respuestas de solo enlace se desaconsejan aquí en SO. Considere [editar su respuesta] (http://meta.stackexchange.com/a/8259/186599) y agregue una sinopsis aquí. – NAZIK

0

Esto parece ser un error en el instalador PyOpenGL win32. Se supone que copia sobre el directorio DLLS desde el paquete fuente (.zip) pero no lo hace en mis pruebas. Esto debe abordarse en PyOpenGL en sí, y lo haré para la próxima versión beta.

Mientras tanto, puede copiar el directorio OpenGL/DLLS de la fuente .zip de PyOpenGL 3.1.0b2 en su directorio de paquetes de sitio/OpenGL para instalar archivos DLL GLLE y GLE sin necesidad de instalarlos en los directorios de su sistema.

Cuestiones relacionadas