whl python-2.7 glut pyopengl
freeglut

python 2.7 - whl - PyOpenGL glutInit NullFunctionError



python package windows (11)

Estoy ejecutando Anaconda Python 2.7 en una máquina Win7 x64 y he usado

pip install PyOpenGL PyOpenGL_accelerate

en la línea de comandos de Anaconda para instalar PyOpenGL.

Tengo un código (no el mío, debo confesar) que hace uso de glutInit

import sys import math import numpy import OpenGL from OpenGL.GL import * from OpenGL.GLUT import * import Image import linkage # ... a whole load of definitions etc ... glutInit(sys.argv) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) glutInitWindowSize(600, 600) glutCreateWindow(''linkage'') init() initWindow() glutIdleFunc(idle) glutMainLoop()

Ejecuto ingresando lo siguiente en la línea de comando:

python main.py peaucellier.txt

Pero luego obtenga el siguiente error (la línea 371 es la línea glutInt (sys.argv) de arriba)

File "C:/Users/Owner/Documents/Python Scripts/linkage/main.py", line 371, in <module> glutInit(sys.argv) File "C:/Anaconda/lib/site-packages/OpenGL/GLUT/special.py", line 333, in glutInit _base_glutInit( ctypes.byref(count), holder ) File "C:/Anaconda/lib/site-packages/OpenGL/platform/baseplatform.py", line 407, in __call__ self.__name__, self.__name__, NullFunctionError: Attempt to call an undefined function glutInit, check for bool(glutInit) before calling

He observado errores similares publicados en este foro, pero ninguna de las correcciones propuestas funciona, por eso pregunto: ¿qué ocurre aquí?

¿Es culpa la instalación? ¿Son correctas las importaciones?

EDITAR: Después de probar muchas correcciones para la versión oficial, ahora estoy usando una versión no oficial que funciona perfectamente con los binarios no oficiales de Windows para los paquetes de extensión de Python


De acuerdo con el enlace a continuación, el problema fue con la instalación en exceso en lugar de la pip install . Parece que el exceso de archivos no forma parte del paquete PyOpenGL o PyOpenGL_accelerate . Tienes que descargarlos por separado.

https://.com/a/39181193/7030177

El usuario de Windows puede usar el siguiente enlace para descargar el exceso como se menciona en el enlace dado. ftp://ftp.sgi.com/opengl/glut/glut3.html.old#windows

Los usuarios de Linux solo pueden instalar glut usando el siguiente comando:

sudo apt-get install freeglut3-dev

Espero que esto ayude :)



En Linux, el módulo pyopengl intenta usar el módulo ctypes para cargar la biblioteca de glut simplemente como "glut". De acuerdo con la documentación de ctypes, la rutina loadLibrary debe recibir el nombre completo del archivo. Por lo tanto, hice un enlace simbólico a libglut.so y lo llamé ''glut'' y todo funcionó.



Mi caso es diferente, Python 3.6 y Windows 10. Sin embargo, exactamente el mismo mensaje de error. Probé todas las soluciones anteriores, sin éxito. Descargué el archivo WHL directamente a mi computadora y la versión de python de here

Entonces pip instala el nombre del archivo. Whl , no más problema!

La respuesta fue de un sitio web chino: Enlace de respuesta


Obtuve el mismo error y resolví la instalación de los archivos requeridos desde here .

Descarga estos archivos:

  • PyOpenGL-3.1.1-cp27-cp27m-win32.whl (descargue si su computadora tiene 32 bits)

  • PyOpenGL-3.1.1-cp27-cp27m-win_amd64.whl (descargue si su computadora tiene 64 bits)

  • PyOpenGL_accelerate-3.1.1-cp27-cp27m-win32.whl (descargue si su computadora tiene 32 bits)

  • PyOpenGL_accelerate-3.1.1-cp27-cp27m-win_amd64.whl (descargue si su computadora tiene 64 bits)

Instala estos archivos .whl para 64 bits:

pip install PyOpenGL-3.1.1-cp27-cp27m-win_amd64.whl pip install PyOpenGL_accelerate-3.1.1-cp27-cp27m-win_amd64.whl

Instala estos archivos .whl para 32 bits:

pip install PyOpenGL-3.1.1-cp27-cp27m-win32.whl pip install PyOpenGL_accelerate-3.1.1-cp27-cp27m-win32.whl


Sé que es un poco tarde. También encontré este problema con Python 2.7 (32 bits) en Windows. Intenté el método mencionado por user2723240 pero todavía fallaba. Finalmente, resolví este problema copiando glue32.dll a System32 en la unidad C y copié glue32.dll en mi directorio de archivos de origen. Funciona bien ahora.


Sí, esto me sucedió en Windows 10 con Python 2.713 anaconda 4 de 64 bits. Usé Conda para instalar Pyopengl pero recibí el mismo error que el anterior. Así que descargué freeglut de transmissionzero y simplemente copié el freeglut.dll (64 bits para mí) al mismo directorio que mi archivo de origen (solo necesita estar en la ruta de búsqueda de DLL) y todo fue bueno.


para Python 2.7, PyopenGL necesita el compilador vc ++ 9, download e instálelo.

entonces:

python -m pip install --upgrade pip pip install image pip install numpy pip install PyOpenGL PyOpenGL_accelerate

He descargado freeglut

lo descomprimió y agregó el directorio bin a la ruta al llamar: glutCreateWindow("sometitle") cambió a glutCreateWindow(b''sometitle'')

y lo hice correr en windows 7



Para las personas en Linux con este error después de instalar a través de easy_install PyOpenGL o pip install PyOpenGL .

-> Instale el paquete de distribución como: sudo apt-get install python-opengl - esto funciona para mí .