2012-04-17 16 views
16

Я пытаюсь изучить основы игрового программирования, и я установил pygame и pyopengl для этого.PyOpenGL TypeError: объект «NoneType» не является вызываемым

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.

+1

Возможно, что-то не так с вашей установкой pyopengl: '_base_glutInit' является' None' в 'OpenGL/GLUT/special.py'. –

+0

@FerdinandBeyer: Я установил его с помощью 'easy_install', так что вы предлагаете мне сделать чистую установку из исходного кода. – RanRag

+0

@FerdinandBeyer: Ваше предложение работало, что-то не так с установкой. Я запустил его из источника, и он работал нормально. – RanRag

ответ

1

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

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

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

3

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

13

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

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

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

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

+1

Мне обычно не нравится толкать старые темы, но это решение заставило меня почувствовать себя счастливым, что все работает сейчас просто отлично =) – r4d1um

4

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

Вот ссылка на перенасыщение (НЕ C:\Windows\System32 поместить его в \System32 не работает!): http://user.xmission.com/~nate/glut.html

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

7

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

+0

Большое вам спасибо - это сработало! –

4

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

Решение:

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

5

в ОС Linux, вы должны установить freeglut3 в Ubuntu 12.04:

sudo apt-get install freeglut3 
0

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

1

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

+0

Обратите внимание, что ссылки на ссылки не приветствуются здесь на SO. Пожалуйста, рассмотрите [редактирование ответа] (http://meta.stackexchange.com/a/8259/186599) и добавьте здесь резюме. – NAZIK

0

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

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

Смежные вопросы