PyOpenGL TypeError: объект "NoneType" не вызывается
Я пытаюсь изучить основы игрового программирования, и я установил pygame
и pyopengl
для этого.
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:Python27libsite-packagespyopengl-3.0.2a5-py2.7.eggOpenGLGLUTspecial.py", line 324, in glutInit
_base_glutInit( ctypes.byref(count), holder )
TypeError: 'NoneType' object is not callable
Я не понимаю, почему я получаю эту ошибку. Я зову glutinit
неправильно?
Я использую Python 2.7.2.
10 ответов
Я использовал Python 2.7.3 в Windows 7 64-бит и имел проблему, вызывающую те же симптомы, что и Noob.
но вышеуказанное решение для переустановки PyOpenGL мне не помогло.
Я пробую longshot-установка freeglut - и это помогло!
Я использовал двоичный пакет Windows MSVC 2.8.0 из здесь и сбросил 32-разрядные и 64-разрядные библиотеки DLL на мой 32-разрядный (c:\Windows\SysWOW64) и 64-разрядный (C:\Windows\System32) dirs соответственно.
Я установил PyOpenGL-3.0.2b2 on Python 3.2 используя setup.py установите (с правами администратора), он вышел с той же ошибкой, что и OP.
Сценарий установки не скопировал папку DLL, поэтому вам нужно скопировать ее самостоятельно
вся папка \PyOpenGL-3.0.2b2\OpenGL\DLL.
Это сработало для меня, надеюсь, это поможет кому-то еще.
похоже, нужно загрузить либо glut, либо freeglut вместе с pyOpenGL. И самое главное, на моей 64-битной системе Win7 он работал только после того, как я разместил на C:\Windows\System
(не C:\Windows\System32
- размещение в \System32
не получилось!)
вот ссылка для glut:http://user.xmission.com / ~nate/glut.html
и freeglut:http://www.transmissionzero.co.uk/software/freeglut-devel/
та же самая проблема происходила со мной. Я использую Python 2.7 в windows xp 32-бит.
устранение:
скачать glut-3.7.6-bin.zip от http://user.xmission.com / ~nate/glut.html, распаковать, разместить glut32.dll файлы на C:\windows\system32 и вы должны быть в порядке.
glutInit()
ожидает 2 аргумента, сначала int как количество аргументов командной строки, затем список (аргументов).glutInit(len(sys.argv),sys.argv)
должен делать так, как нет argc
в модуле sys.
проблема была с моим PyOpenGL
установки. Ранее я установил его с помощью easy_install
.
Итак, как @Ferdinand предположил, что, похоже, что-то не так с вашей установкой pyopengl.
Я сделал чистую установку, используя python setup.py install
и это сработало.
У меня была аналогичная проблема с python 2.7 64 бит windows. Установите пакет pyOpenGL из http://www.lfd.uci.edu / ~gohlke / pythonlibs/ . Большое спасибо Christopher Gohlke для поддержания этого !!
Это похоже на ошибку в установщике pyopengl win32. Предполагается скопировать через каталог DLL из исходного пакета (.молния), но не делает этого в моих тестах. Это должно быть рассмотрено в самом PyOpenGL, и я сделаю это для следующей бета-версии.
тем временем, вы можете скопировать каталог OpenGL/DLL из PyOpenGL 3.1.0b2 источник .zip в каталог site-packages / OpenGL для установки библиотек Glut и GLE без необходимости их установки в вашу систему справочники.
Я просто использую python2.7.3 на windows-64bits и я встретил проблему. Я решил это, используя неофициальный пакет pyopengl. Из artical кажется, что официальный пакет не поддерживает 64bits-windows. http://codeyarns.com/2012/04/27/pyopengl-installation-notes-for-windows/