PyOpenGL TypeError: объект "NoneType" не может быть вызван - программирование
Подтвердить что ты не робот

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:\Python27\lib\site-packages\pyopengl-3.0.2a5-py2.7.egg\OpenGL\GLUT\special.py", line 324, in glutInit
    _base_glutInit( ctypes.byref(count), holder )
TypeError: 'NoneType' object is not callable

Я не понимаю, почему я получаю эту ошибку. Я называю glutinit неправильным способом?

Я использую Python 2.7.2.

4b9b3361

Ответ 1

Проблема была в моей установке PyOpenGL. Раньше я устанавливал его с помощью easy_install.

Итак, как @Ferdinand предположил, что, похоже, что-то не так с вашей установкой pyopengl.

Я сделал чистую установку с помощью python setup.py install, и она сработала.

Ответ 2

Я использовал Python 2.7.3 для Windows 7 64-bit и имел проблему, вызывающую те же симптомы, что и Noob.

Но вышеупомянутое решение переустановки PyOpenGL не помогло мне.

Я пытаюсь сделать longshot - установку freeglut - и это помогло!

Я использовал двоичный пакет Windows MSVC 2.8.0 от здесь и отбросил 32-разрядные и 64-разрядные библиотеки DLL на 32-разрядные (c:\Windows\SysWOW64) и 64-бит (C:\Windows\System32) соответственно.

Ответ 3

Я установил PyOpenGL-3.0.2b2 на Python 3.2 с помощью установки setup.py(с правами администратора), она вышла с той же ошибкой, что и OP. Настройка script не копировала папку DLLS, поэтому вам нужно ее скопировать всю папку \PyOpenGL-3.0.2b2\OpenGL\DLLS.
Это сработало для меня, надеюсь, что это поможет кому-то еще.

Ответ 4

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

 sudo apt-get install freeglut3

Ответ 5

Похоже, вам нужно загрузить либо глют, либо freeglut вместе с pyOpenGL. И самое главное, на моей 64-битной системе Win7 она работала только после того, как я поместил файл glut32.dll в C:\Windows\System (NOT C:\Windows\System32 - его размещение в \System32 не сработало!)

Здесь ссылка для перенасыщения: http://user.xmission.com/~nate/glut.html

И freeglut: http://www.transmissionzero.co.uk/software/freeglut-devel/

Ответ 6

То же самое происходило со мной. Я использую Python 2.7 для Windows xp 32-бит.

Решение:

Просто скачайте glut-3.7.6-bin.zip из http://user.xmission.com/~nate/glut.html, распакуйте, поместите glut32.dll в C:\windows\system32, и все будет в порядке.

Ответ 7

glutInit() ожидает 2 аргумента, сначала int как число аргументов командной строки, затем список (аргументов).
glutInit(len(sys.argv),sys.argv) должен делать, как нет argc в модуле sys.

Ответ 8

У меня была аналогичная проблема с 64-битными окнами python 2.7. Установите пакет pyOpenGL из http://www.lfd.uci.edu/~gohlke/pythonlibs/. Большое спасибо Кристоферу Гольке за то, что он поддержал это!

Ответ 9

Я просто использую python2.7.3 на windows-64bits, и я столкнулся с проблемой. Я решил это, используя неоперабельный пакет pyopengl. Из художественного, кажется, официальный пакет не поддерживает 64-битные окна. http://codeyarns.com/2012/04/27/pyopengl-installation-notes-for-windows/

Ответ 10

Кажется, это ошибка в установщике PyOpenGL win32. Предполагается скопировать каталог DLLS из исходного пакета (.zip), но не удается сделать это в моих тестах. Это должно быть рассмотрено в PyOpenGL, и я сделаю это для следующей беты.

Тем временем вы можете скопировать каталог OpenGL/DLLS из источника .zip источника PyOpenGL 3.1.0b2 в каталог вашего сайта /OpenGL для установки DLL GLUT и GLE без необходимости их установки в свои системные каталоги.