Проблемы с использованием pyopengl в Python 2.6.6

То, что я пытаюсь сделать, - это кодировать базовое окно OpenGL 2.0, когда я запускаю код из файла, он работает в течение первых двух запусков, а затем сбрасывает ошибки. Если я запускаю тот же самый код из графического интерфейса IDLE, я получаю окно каждый раз. Ниже приводится список добавленных пакетов Python 2.6.6, кода и ошибок. Использую ли я какие-либо конфликтующие пакеты? Мне не хватает пакета? Мой импорт работает в графическом интерфейсе IDLE. Любая помощь была бы замечательной !!

Date:   Aug 1, 2011             Time:   03:20:00 AM
This is the listing of packages installed for Python 2.6.6.  
This file was created manually and is meant to be used as a 
reference to show what packages were added in which order

python-2.6.6.msi
setuptools-0.6c11-win32-py26.exe
numpy-1.6.0-win32-superpack-python26.exe
PIL-1.1.7-win32-py26.exe
wxPython2.8-win32-unicode-2.8.12.0-py26.exe
wxPython2.8-win32-docs-demos-2.8.12.0.exe
pyglet-1.1.4.msi
pywin32-216-win32.py32.exe
PyOpenGL-3.0.1.win32.exe
PyOpenGL-accelerate-3.0.1-win32-py26.exe
Pygame-1.9.1-win32-py26.msi
py2exe-0.6.9-win32-py2.6.exe
psyco (using c:\python26\scripts\easy_install psyco)
    #import sys              #redundant(used to  eval errors)
    #import OpenGL           #redundant(used to  eval errors)       
    #import numpy            #redundant(used to  eval errors)

    #From here down is the original code, with gl imports listed as GLUT/GL/GLU
    #Page 26 PyOpenGL.pdf by Stan Blank, Ph.D
    from OpenGL.GL import *     #These 3 imports are called in a layered format
    from OpenGL.GLU import *    #Fron the simplest to the most complex(complete)
    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()
IDLE error listings
Traceback (most recent call last):
  File "C:\Code\Python\PyOpenGL\ogl_01.py", line 7, in 
    from OpenGL.GL import *
  File "C:\Python26\lib\site-packages\pyopengl-3.0.1-py2.6-win32.egg\OpenGL\GL\__init__.py", line 2, in 
    from OpenGL.raw.GL import *
  File "C:\Python26\lib\site-packages\pyopengl-3.0.1-py2.6-win32.egg\OpenGL\raw\GL\__init__.py", line 6, in 
    from OpenGL.raw.GL.constants import *
  File "C:\Python26\lib\site-packages\pyopengl-3.0.1-py2.6-win32.egg\OpenGL\raw\GL\constants.py", line 7, in 
    from OpenGL import platform, arrays
  File "C:\Python26\lib\site-packages\pyopengl-3.0.1-py2.6-win32.egg\OpenGL\arrays\__init__.py", line 22, in 
    formathandler.FormatHandler.loadAll()
  File "C:\Python26\lib\site-packages\pyopengl-3.0.1-py2.6-win32.egg\OpenGL\arrays\formathandler.py", line 37, in loadAll
    cls.loadPlugin( entrypoint )
  File "C:\Python26\lib\site-packages\pyopengl-3.0.1-py2.6-win32.egg\OpenGL\arrays\formathandler.py", line 44, in loadPlugin
    plugin_class = entrypoint.load()
  File "C:\Python26\lib\site-packages\pyopengl-3.0.1-py2.6-win32.egg\OpenGL\plugins.py", line 14, in load
    return importByName( self.import_path )
  File "C:\Python26\lib\site-packages\pyopengl-3.0.1-py2.6-win32.egg\OpenGL\plugins.py", line 28, in importByName
    module = __import__( ".".join(moduleName), {}, {}, moduleName)
  File "C:\Python26\lib\site-packages\pyopengl-3.0.1-py2.6-win32.egg\OpenGL\arrays\numpymodule.py", line 25, in 
    from OpenGL_accelerate.numpy_formathandler import NumpyHandler
  File "numpy.pxd", line 30, in OpenGL_accelerate.numpy_formathandler (src\numpy_formathandler.c:3543)
ValueError: numpy.dtype does not appear to be the correct type object

Извините за длину сообщения, я просто хотел полностью задокументировать проблему. Установка Py выполняется на Win XP SP3, заголовок IDLE:

Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)] on win32

person savalia    schedule 10.08.2011    source источник


Ответы (2)


Расширение numpy Cython для OpenGL, вероятно, было создано с помощью numpy 1.3.x. Итак, вы либо перекомпилируете OpenGL (особенно расширение Cython) с новой версией numpy, либо понизите версию numpy до 1.3.x. (если это не поможет, попробуйте также понизиться до 1.4.x и 1.5.x - я точно не знаю, что изменилось в какой версии).

person xyz-123    schedule 11.08.2011
comment
Когда вы говорите, перекомпилируйте. Вы имеете в виду файлы сценариев python от py до pyc или мне нужны файлы h / cpp для компиляции и создания обновленной версии файлов lib / dll? У меня есть файл msi pyopengl (из установки, но также есть zip-файл). Кстати, у меня тоже была эта проблема с суперпаком numpy 1.5 для py 2.6. - person savalia; 13.08.2011
comment
вы можете перекомпилировать файлы C / CPP вручную, но я мало что знаю о Windows. В качестве альтернативы вы просто загрузите старые установщики numpy отсюда sourceforge.net/projects/numpy/files/NumPy < / а> - person xyz-123; 13.08.2011
comment
Я попробовал понизить numpy 1.6 сначала до 1.5, затем до 1.3, но все равно то же самое, если я набираю код OpenGL в интерактивном режиме, он работает, когда я загружаю его как файл, я получаю ту же проблему. Мое последнее средство - полностью удалить Py 2.6, а затем постепенно добавлять каждый модуль и тест. Перекомпиляция кода opengl C ++ приведет к сбою всех других приложений C / C ++, которые его используют, поэтому я стараюсь этого избежать. - person savalia; 17.08.2011

Я пробовал это, и в моем случае это сработало,

  1. перешел на http://pypi.python.org/pypi/PyOpenGL-accelerate и загрузил zip-архив с исходным кодом.
  2. с помощью 7zip я извлек пакет в папку с именем PyOpenGL-accelerate-3.0.1
  3. затем, используя командную строку, перешел в папку, которую я только что создал
  4. Я набрал C: \ python26 \ python setup.py install, чтобы выполнить установку пакета.

    После этого я запустил базовый скрипт OpenGL в IDLE, Dr.Python и PythonWin. Все три IDE смогли создать правильное окно OpenGL (окно 400x400, черный фон и белый чайник в виде проволочного каркаса) без каких-либо ошибок. С этим решением я смог сохранить Numpy 1.6.

person savalia    schedule 28.08.2011