2014-11-02 24 views
14

Tôi đang chạy Anaconda Python 2.7 trên một máy x64 Win7 và sử dụngPyOpenGL glutInit NullFunctionError

pip install PyOpenGL PyOpenGL_accelerate 

tại dòng lệnh để cài đặt Anaconda PyOpenGL.

Tôi có một số mã (không của riêng tôi tôi phải thú nhận) mà làm cho sử dụng glutInit

import sys 
import math 
import numpy 

import OpenGL 
from OpenGL.GL import * 
from OpenGL.GLUT import * 

import Image 

import linkage 

# ... a whole load of definitions etc ... 

glutInit(sys.argv) 
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) 
glutInitWindowSize(600, 600) 
glutCreateWindow('linkage') 
init() 
initWindow() 
glutIdleFunc(idle) 
glutMainLoop() 

tôi chạy bằng cách nhập sau vào dòng lệnh:

python main.py peaucellier.txt 

Nhưng sau đó nhận được lỗi sau (dòng 371 là dòng glutInt (sys.argv) ở trên)

File "C:/Users/Owner/Documents/Python Scripts/linkage/main.py", line 371, in <module> 
glutInit(sys.argv) 

File "C:\Anaconda\lib\site-packages\OpenGL\GLUT\special.py", line 333, in glutInit 
_base_glutInit(ctypes.byref(count), holder) 

File "C:\Anaconda\lib\site-packages\OpenGL\platform\baseplatform.py", line 407, in __call__ 
self.__name__, self.__name__, 

NullFunctionError: Attempt to call an undefined function glutInit, check for bool(glutInit) before calling 

Tôi đã xem các lỗi tương tự pos ted trong diễn đàn này nhưng không có bản sửa lỗi được đề xuất nào đang hoạt động, đó là lý do tôi hỏi, có gì sai ở đây?

Cài đặt có lỗi không? Việc nhập khẩu có đúng không?

EDIT: Sau khi thử nhiều nhiều bản sửa lỗi cho phát hành chính thức bây giờ tôi đang sử dụng một phiên bản không chính thức mà làm việc một cách hoàn hảo từ Unofficial Windows Binaries for Python Extension Packages

Trả lời

9

Sau khi nhìn xung quanh cho một giải pháp cho một vấn đề tương tự tôi chạy qua nhóm này google trả lời cho câu hỏi: https://groups.google.com/forum/#!topic/glumpy-users/aC1NjEHXtEE

Có sự cố với OpenGL.GLUT khi được tải xuống dưới dạng pip từ nguồn chính thức. Gỡ cài đặt OpenGL bằng cách sử dụng pip, sau đó tải xuống OpenGL từ http://www.lfd.uci.edu/~gohlke/pythonlibs/

+0

Làm việc đối với tôi trên Win 7, trăn Anaconda 2.7, giải pháp freeglut bởi những người khác như Mamuka Arabuli hoặc Gnat đề xuất không, vì vậy hãy thử nó trước. –

0

Tôi biết đã muộn một chút. Tôi cũng gặp phải vấn đề này với python 2,7 (32 bit) trong cửa sổ. Tôi đã thử phương pháp được đề cập bởi user2723240 nhưng vẫn không thành công. Cuối cùng, tôi giải quyết vấn đề này bằng cách sao chép glue32.dll vào System32 trong ổ C và sao chép glue32.dll vào thư mục tệp nguồn của tôi. Nó hoạt động tốt ngay bây giờ.

+0

Có, tôi đã thử nhưng nó không hoạt động trên thiết lập của tôi. Chỉ những bản phát hành không chính thức được liên kết trong tác phẩm OP cho tôi. – DrBwts

5

If installing PyOpenGL from easy_install, pip or conda, đảm bảo rằng bạn đã cài đặt triển khai GLUT, chẳng hạn như FreeGLUT (prebuilt Windows binaries).

Đối với FreeGLUT, hãy sao chép tệp đã phân phối vào một vị trí trên ổ cứng của bạn và sau đó thêm đường dẫn vào thư mục bin (chứa GLUT DLL) vào biến môi trường PATH của bạn. Sau đó, PyOpenGL sẽ hoạt động như mong đợi.

7

Đối với những người trên Linux với lỗi này sau khi cài đặt qua easy_install PyOpenGL hoặc pip install PyOpenGL.

-> Cài đặt gói phân phối dưới dạng: sudo apt-get install python-opengl - công trình này cho tôi.

0

Tôi gặp lỗi tương tự và đã giải quyết cài đặt các tệp được yêu cầu từ here.

Tải về những tập tin này:

  • PyOpenGL-3.1.1-cp27-cp27m-win32.whl (tải về nếu máy tính của bạn 32 bit)

  • PyOpenGL-3.1.1-cp27-cp27m-win_amd64.whl (tải về nếu máy tính của bạn 64 bit)

  • PyOpenGL_accelerate-3.1.1-cp27-cp27m-win32.whl (tải về nếu máy tính của bạn 32 bit)

  • PyOpenGL_accelerate- 3.1.1-cp27-cp27m-win_amd64.whl (tải về nếu máy tính của bạn 64 bit)

cài đặt các .whl file cho 64 bit:

pip install PyOpenGL-3.1.1-cp27-cp27m-win_amd64.whl 
pip install PyOpenGL_accelerate-3.1.1-cp27-cp27m-win_amd64.whl 

cài đặt các .whl file cho 32 bit:

pip install PyOpenGL-3.1.1-cp27-cp27m-win32.whl 
pip install PyOpenGL_accelerate-3.1.1-cp27-cp27m-win32.whl 
+0

ergul, bạn sẽ nhận thấy rằng đây là liên kết tương tự như trong bài viết mở đầu. – DrBwts

+0

@DrBwts bạn nói đúng. Câu hỏi này được bạn hỏi 2 năm trước. Tôi chỉ viết một giải pháp từng bước cho những người không biết tiếng Anh rất tốt. –

2

cho python 2.7, PyopenGL cần vC++ 9 trình biên dịch, download và cài đặt nó.

thì:

python -m pip install --upgrade pip 

pip install image 

pip install numpy 

pip install PyOpenGL PyOpenGL_accelerate 

tôi tải freeglut

giải nén nó và thêm vào thư mục bin vào đường khi gọi: glutCreateWindow("sometitle") đổi thành glutCreateWindow(b'sometitle')

và bị nó chạy trên windows 7

0

Trên linux, mô đun pyopengl a ttempts sử dụng mô-đun ctypes để tải thư viện glut đơn giản là 'glut'. Theo tài liệu ctypes, thói quen loadLibrary phải được cung cấp tên tệp hoàn chỉnh. Vì vậy, tôi đã tạo một liên kết tượng trưng cho libglut.so và đặt tên nó là 'glut' và mọi thứ chỉ hoạt động.

7

Theo liên kết bên dưới sự cố với cài đặt glut thay vì pip install. Có vẻ như các tệp glut không phải là một phần của gói PyOpenGL hoặc PyOpenGL_accelerate. Bạn phải tải chúng một cách riêng biệt.

https://stackoverflow.com/a/39181193/7030177

người dùng Windows có thể sử dụng liên kết bên dưới để tải về dư thừa như đã đề cập trong liên kết nhất định. ftp://ftp.sgi.com/opengl/glut/glut3.html.old#windows

Người dùng Linux có thể chỉ cần cài đặt dư thừa bằng cách sử dụng lệnh sau:

sudo apt-get install freeglut3-dev 

Hope this helps :)

0

trường hợp của tôi là khác nhau, Python 3.6 và cửa sổ 10. Tuy nhiên chính xác cùng một thông báo lỗi. Đã thử tất cả các giải pháp trên, không thành công. Đã tải xuống WHL tệp ngay trên máy tính của tôi và phiên bản python từ HERE

Sau đó, đặt tên tệp pip. Whl, không còn vấn đề gì nữa!

Câu trả lời là từ một trang web Trung Quốc: Answer Link

1

Vâng, điều này xảy ra với tôi trên Windows 10 chạy python 2,713 Anaconda 4 64 bit. Tôi đã sử dụng conda để cài đặt pyopengl nhưng nhận được lỗi tương tự như trên.Vì vậy, tôi tải về freeglut từ transmissionzero và chỉ cần sao chép các freeglut.dll (64 bit cho tôi) vào thư mục tương tự như tập tin nguồn của tôi (nó chỉ cần được trong dll searchpath) và tất cả đều tốt.

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