J'utilise Anaconda Python 2.7 sur une machine Win7 x64 et utilisé
pip install PyOpenGL PyOpenGL_accelerate
sur la ligne de commande Anaconda pour installer PyOpenGL.
J'ai du code (pas le mien, je dois l'avouer) qui utilise 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()
Je cours en entrant ce qui suit à la ligne de commande:
python main.py peaucellier.txt
Mais ensuite, obtenez l'erreur suivante (la ligne 371 est la ligne glutInt (sys.argv) ci-dessus)
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
J'ai consulté des erreurs similaires postées sur ce forum, mais aucune des corrections proposées ne fonctionne. C'est pourquoi je demande, qu'est-ce qui ne va pas ici?
L'installation est-elle en cause? Les importations sont-elles correctes?
EDIT: Après avoir essayé de nombreux correctifs pour la version officielle, j'utilise maintenant une version non officielle qui fonctionne parfaitement à partir de Fichiers binaires Windows non officiels pour les packages d'extension Python
Après avoir cherché une solution à un problème similaire, j'ai trouvé ce groupe Google qui répond à la question suivante: https://groups.google.com/forum/#!topic/glumpy-users/aC1NjEHXtEE
Il y a un problème avec OpenGL.GLUT lors du téléchargement en tant que pip depuis la source officielle. Désinstallez OpenGL avec pip
, puis téléchargez-le à partir de http://www.lfd.uci.edu/~gohlke/pythonlibs/
Selon le lien ci-dessous, le problème était lié à l'installation de Glut plutôt qu'à pip install
. Il semble que les fichiers glut ne fassent pas partie des packages PyOpenGL ou PyOpenGL_accelerate. Vous devez les télécharger séparément.
_ { https://stackoverflow.com/a/39181193/7030177 } _
Les utilisateurs Windows peuvent utiliser le lien ci-dessous pour télécharger glut, comme indiqué dans le lien indiqué ftp://ftp.sgi.com/opengl/glut/glut3.html.old#windows }
Les utilisateurs de Linux peuvent simplement installer glut en utilisant la commande suivante:
Sudo apt-get install freeglut3-dev
J'espère que cela t'aides :)
Pour les personnes sous Linux avec cette erreur après l'installation via easy_install PyOpenGL
ou pip install PyOpenGL
.
-> Installez le paquet de distribution en tant que: Sudo apt-get install python-opengl
- cela fonctionne pour moi.
Si vous installez PyOpenGL depuis easy_install, pip ou conda , vérifiez que vous avez déjà installé une implémentation GLUT, telle que FreeGLUT ( binaires Windows prédéfinis ).
Pour FreeGLUT, copiez les fichiers distribués dans un emplacement de votre disque dur, puis ajoutez le chemin d'accès au répertoire bin (qui contient les DLL GLUT) à votre variable d'environnement PATH. PyOpenGL devrait alors fonctionner comme prévu.
Oui, cela m’est arrivé sous Windows 10 exécutant python 2.713 anaconda 4 64 bits. J'avais utilisé conda pour installer pyopengl mais j'avais reçu la même erreur que ci-dessus. J'ai donc téléchargé freeglut à partir de transmissionzero et copié le fichier freeglut.dll (64 bits pour moi) dans le même répertoire que mon fichier source (il doit simplement figurer dans le chemin de recherche de la DLL), et tout était bien.
pour python 2.7, PyopenGL a besoin du compilateur vc ++ 9, download et installez-le.
puis:
python -m pip install --upgrade pip
pip install image
pip install numpy
pip install PyOpenGL PyOpenGL_accelerate
J'ai téléchargé freeglut
décompressez-le et ajoutez le répertoire bin au chemin lors de l'appel: glutCreateWindow("sometitle")
remplacé par glutCreateWindow(b'sometitle')
et l'a fait fonctionner sur Windows 7
J'ai eu la même erreur et un résolu l'installation des fichiers requis de ici .
Téléchargez ces fichiers:
PyOpenGL-3.1.1-cp27-cp27m-win32.whl (à télécharger si votre ordinateur est en 32 bits)
PyOpenGL-3.1.1-cp27-cp27m-win_AMD64.whl (télécharger si votre ordinateur 64 bits)
PyOpenGL_accelerate-3.1.1-cp27-cp27m-win32.whl (à télécharger si votre ordinateur est en 32 bits)
PyOpenGL_accelerate-3.1.1-cp27-cp27m-win_AMD64.whl (télécharger si votre ordinateur 64 bits)
installez ces fichiers .whl pour 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
installez ces fichiers .whl sur 32 bits:
pip install PyOpenGL-3.1.1-cp27-cp27m-win32.whl
pip install PyOpenGL_accelerate-3.1.1-cp27-cp27m-win32.whl
Je sais qu'il est un peu tard. J'ai également rencontré ce problème avec Python 2.7 (32 bits) dans Windows. J'ai essayé la méthode mentionnée par l'utilisateur2723240 mais j'ai quand même échoué. Enfin, j'ai résolu ce problème en copiant glue32.dll dans System32 in C et en copiant glue32.dll dans le répertoire de mon fichier source. Cela fonctionne bien maintenant.
Ce qui suit devrait fonctionner pour les utilisateurs d’Anaconda:
conda install - c conda-forge freeglut
Mon cas est différent, Python 3.6 et Windows 10. Cependant, exactement le même message d'erreur. J'ai essayé toutes les solutions ci-dessus, sans succès. Téléchargé le fichier WHL
directement sur mon ordinateur et la version de python depuis ICI
Puis pip installe nomfichier .Whl
, plus de problème!
La réponse provenait d'un site web chinois: Answer Link
Sur linux, le module pyopengl tente d'utiliser le module ctypes pour charger la bibliothèque glut simplement comme "glut". Selon la documentation ctypes, le nom de fichier complet doit être attribué à la routine loadLibrary. Par conséquent, j'ai créé un lien symbolique vers libglut.so et je l'ai nommé «surabondance» et tout fonctionne.