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 :)
Después de buscar una solución a un problema similar, me encontré con este grupo de Google que responde la pregunta: https://groups.google.com/forum/#!topic/glumpy-users/aC1NjEHXtEE
Hay un problema con OpenGL.GLUT cuando se descarga como pip de la fuente oficial. Desinstale OpenGL usando pip
, luego descargue OpenGL desde http://www.lfd.uci.edu/~gohlke/pythonlibs/
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ó.
Lo siguiente debería funcionar para los usuarios de Anaconda:
conda install - c conda-forge freeglut
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
Si está instalando PyOpenGL desde easy_install, pip o conda , asegúrese de que ya haya instalado una implementación GLUT, como FreeGLUT ( archivos binarios precreados de Windows ).
Para FreeGLUT, copie los archivos distribuidos en una ubicación en su disco duro y luego agregue la ruta al directorio bin (que contiene los archivos DLL de GLUT) a su variable de entorno PATH. Entonces PyOpenGL debería funcionar como se espera.
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í .