2012-04-17 36 views
16

Tôi đang cố gắng tìm hiểu các khái niệm cơ bản về lập trình trò chơi và tôi đã cài đặt pygamepyopengl cho điều đó.PyOpenGL TypeError: đối tượng 'NoneType' không được gọi là

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() 

Khi tôi chạy mã trên trong cửa sổ lệnh của tôi sử dụng

python test.py 

tôi nhận được lỗi sau.

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 

Tôi không hiểu tại sao tôi gặp phải lỗi này. Tôi có gọi số glutinit không đúng cách không?

Tôi đang sử dụng Python 2.7.2.

+1

Có vẻ như đã xảy ra sự cố khi cài đặt pyopengl của bạn: '_base_glutInit' là' None' trong 'OpenGL/GLUT/special.py'. –

+0

@ FerdinandBeyer: Tôi đã cài đặt nó bằng cách sử dụng 'easy_install' vì vậy bạn nên làm gì để cài đặt sạch từ nguồn. – RanRag

+0

@FerdinandBeyer: Đề xuất của bạn đã hoạt động khi có sự cố khi cài đặt. Tôi intalled nó từ nguồn và nó làm việc tốt. – RanRag

Trả lời

1

Sự cố xảy ra với cài đặt PyOpenGL của tôi. Trước đó tôi đã cài đặt nó bằng cách sử dụng easy_install.

Vì vậy, như @ Ferdinand đã đề xuất rằng có vẻ như đã xảy ra sự cố với cài đặt pyopengl của bạn.

Tôi đã cài đặt sạch sẽ bằng cách sử dụng python setup.py install và đã hoạt động.

3

glutInit() dự kiến ​​2 đối số, đầu tiên là int là số đối số dòng lệnh, sau đó là danh sách (của đối số).
glutInit(len(sys.argv),sys.argv) nên làm như không có argc trong mô-đun sys.

13

Tôi đã sử dụng Python 2.7.3 trên Windows 7 64 bit và gặp sự cố gây ra các triệu chứng giống như Noob.

Nhưng giải pháp cài đặt lại PyOpenGL ở trên không giúp tôi.

Tôi thử cài đặt miễn phí bản cài đặt miễn phí - và điều đó đã giúp ích!

Tôi đã sử dụng gói nhị phân Windows MSVC 2.8.0 từ here và đã xóa cả hai tệp 32 bit và 64 bit thành 32 bit (c: \ Windows \ SysWOW64) và 64 bit (C: \ Windows \ System32) dirs cho phù hợp.

+1

Tôi thường không thích đẩy chủ đề cũ, nhưng giải pháp này làm cho tôi cảm thấy hạnh phúc tất cả các công trình bây giờ chỉ tốt =) – r4d1um

4

Có vẻ như một người phải tải xuống hoặc là glut hoặc freeglut cùng với pyOpenGL. Và quan trọng nhất, trên hệ thống Win7 64-bit của tôi nó chỉ làm việc khi tôi đặt các tập tin glut32.dll trong C:\Windows\System -

Dưới đây là một liên kết cho dư thừa (KHÔNG C:\Windows\System32 đặt nó trong \System32 đã không làm việc!): http://user.xmission.com/~nate/glut.html

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

7

tôi đã cài đặt PyOpenGL-3.0.2b2 trên Python 3.2 sử dụng setup.py cài đặt (với quyền quản trị), nó xuất hiện với lỗi tương tự như OP. Tập lệnh thiết lập không sao chép thư mục DLLS, vì vậy bạn phải tự sao chép nó toàn bộ thư mục \ PyOpenGL-3.0.2b2 \ OpenGL \ DLLS.
Điều này làm việc cho tôi, hy vọng nó sẽ giúp bất cứ ai khác.

+0

Cảm ơn bạn rất nhiều - đó đã làm việc! –

4

Vấn đề chính xác đã xảy ra với tôi. Tôi đang sử dụng Python 2.7 trên windows xp 32-bit.

Giải pháp:

Chỉ cần tải glut-3.7.6-bin.zip từ http://user.xmission.com/~nate/glut.html, giải nén, đặt glut32.dll trong C: \ windows \ system32 và bạn nên có OK.

5

trong linux os bạn nên cài đặt freeglut3 trong ubuntu 12.04:

sudo apt-get install freeglut3 
1

Tôi gặp vấn đề tương tự với python 2.7 64 bit windows. Cài đặt gói pyOpenGL từ http://www.lfd.uci.edu/~gohlke/pythonlibs/. Rất cám ơn Christopher Gohlke vì đã duy trì điều này !!

+0

Lưu ý rằng các câu trả lời chỉ liên kết được khuyến khích ở đây trên SO. Vui lòng xem xét [chỉnh sửa câu trả lời của bạn] (http://meta.stackexchange.com/a/8259/186599) và thêm bản tóm tắt tại đây. – NAZIK

0

Điều này dường như là một lỗi trong trình cài đặt win32 PyOpenGL. Nó là vụ phải sao chép qua thư mục DLLS từ gói nguồn (.zip) nhưng không làm như vậy trong các thử nghiệm của tôi. Điều này nên được giải quyết trong PyOpenGL, và tôi sẽ làm như vậy cho bản beta tiếp theo. Trong khi chờ đợi, bạn có thể sao chép thư mục OpenGL/DLLS từ thư mục PyOpenGL 3.1.0b2 .zip vào thư mục site-packages/OpenGL để cài đặt GLUT và GLE DLL mà không cần cài đặt chúng vào thư mục hệ thống của bạn.

Các vấn đề liên quan