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.
Это сработало для меня, надеюсь, это поможет кому-то еще.


в ОС linux вы должны установить freeglut3 в ubuntu 12.04:

 sudo apt-get install freeglut3

похоже, нужно загрузить либо 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/