Python安裝配置OpenGL環(huán)境的全過程記錄
最近學習計算機圖形學,需要使用OpenGL,踩了很多雷,最后終于成功了,總結了一下教程和一些踩雷心得
環(huán)境:win10_64位系統(tǒng)、PyCharm(本人使用的是python3.8版本)
錯誤安裝如下(錯誤演示我使用的是python3.6版本)
打開PyCharm,如下圖打開設置

在project untitled中打開python interpreter,如下圖所示

有的教程是讓你在這里直接搜索OpenGL進行安裝,然而這里只能安裝32位,所以會導致代碼是不報錯了,可是運行便會報錯(glut錯誤),如下所示

下面是正確安裝方法(python3.8演示)
我們不能在PyCharm上直接安裝OpenGL,需要在官網(wǎng)上進行下載
鏈接:https://www.lfd.uci.edu/~gohlke/pythonlibs/
進入后一直向下找,找到PyOpenGL,我的是python3.8版本,就選擇下載箭頭指的兩個文件(cp38:意思就是python3.8版本;amd64:意思就是64位操作系統(tǒng))
根據(jù)自己的版本進行下載

我的是在直接下載到了C盤中,如下所示

這兩個.whl文件需要使用cmd命令窗口進行命令安裝,它會直接安裝到你的對應版本的庫文件中


pip install PyOpenGL-3.1.5-cp38-cp38-win_amd64.whl
pip install PyOpenGL_accelerate-3.1.5-cp38-cp38-win_amd64.whl
安裝成功后,去PyCharm的設置去查看庫,如下所示

這里有個點要注意一下,本人在這里踩了大雷,因為我之前的PyCharm使用的是python3.6版本,所以導致我安裝完之后,無法使用,但當我下載了3.6版本的時候,發(fā)現(xiàn)系統(tǒng)提示我無法安裝,應該是因為我有3.8版本,導致我3.6無法正常去安裝,所以這里就需要切換到python3.8的對應路徑,如何就可以正常使用了。
如下圖,找到自己的python3.8文件夾,然后找到里面的python.exe文件,然后將它的路徑添加的下圖紅框中的地方去,就可以成功導入你python3.8的庫了,然后在檢查自己庫中是否存在PyOpenGL和PyOpenGL-accelerate

代碼測試
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def Draw():
glClear(GL_COLOR_BUFFER_BIT)
glRotatef(0.5, 0, 1, 0)
glutWireTeapot(0.5)
glFlush()
glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(400, 400)
glutCreateWindow("test")
glutDisplayFunc(Draw)
glutIdleFunc(Draw)
glutMainLoop()
測試結果
旋轉的立體水壺

附: “OpenGL.error.NullFunctionError: Attempt to call an undefined function”解決方案
在windows_64下利用命令:pip install pyopengl 安裝python的openGL環(huán)境。結果運行示例代碼出現(xiàn)以下錯誤:
OpenGL.error.NullFunctionError: Attempt to call an undefined function glutInitDisplayMode, check for bool(glutInitDisplayMode) before calling
原因分析
主要是你的windows是64位的,但是使用命令pip install pyopengl 安裝后,執(zhí)行示例默認使用的是pyopengl_32位的,所以出現(xiàn)了以上錯誤!
解決方案
在Windows_64上安裝64位的pyopengl 即可,pyopengl_64位下載鏈接:PyOpenGL‑3.1.1‑win_amd64.whl
下載與自己Python版本合適的,執(zhí)行命令:pip install XXX.whl 即可正常使用pyopengl環(huán)境。
測試環(huán)境代碼
from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * def drawFunc(): glClear(GL_COLOR_BUFFER_BIT) #glRotatef(1, 0, 1, 0) glutWireTeapot(0.5) glFlush() glutInit() glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA) glutInitWindowSize(400, 400) #參數(shù)為b類型而不是string glutCreateWindow(b"First") glutDisplayFunc(drawFunc) #glutIdleFunc(drawFunc) glutMainLoop()
總結
到此這篇關于Python安裝配置OpenGL環(huán)境的文章就介紹到這了,更多相關Python安裝配置OpenGL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python使用PyCharm進行遠程開發(fā)和調(diào)試
這篇文章主要介紹了python使用PyCharm進行遠程開發(fā)和調(diào)試,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
如何在?ASP.NET?Core?中創(chuàng)建?gRPC?客戶端和服務器
gRPC 是一種高性能、開源的遠程過程調(diào)用(RPC)框架,它基于 Protocol Buffers(protobuf)定義服務,并使用 HTTP/2 協(xié)議進行通信,這篇文章主要介紹了在?ASP.NET?Core?中創(chuàng)建?gRPC?客戶端和服務器,需要的朋友可以參考下2024-11-11
Python使用oslo.vmware管理ESXI虛擬機的示例參考
oslo.vmware是OpenStack通用框架中的一部分,主要用于實現(xiàn)對虛擬機的管理任務,借助oslo.vmware模塊我們可以管理Vmware ESXI集群環(huán)境。2021-06-06
Python+Selenium實現(xiàn)在Geoserver批量發(fā)布Mongo矢量數(shù)據(jù)
這篇文章主要為大家詳細介紹了如何利用Python+Selenium實現(xiàn)在 Geoserver批量發(fā)布來自Mongo中的矢量數(shù)據(jù),文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-07-07
Pandas數(shù)據(jù)類型之category的用法
Pandas中有一種特殊的數(shù)據(jù)類型叫做category.它表示的是一個類別,一般用在統(tǒng)計分類中,比如性別,血型,分類,級別等等.有點像java中的enum,今天給大家詳細講解一下category的用法,需要的朋友可以參考下2021-06-06
Python中MySQLdb和torndb模塊對MySQL的斷連問題處理
這篇文章主要介紹了Python中MySQLdb和torndb模塊對MySQL的斷連問題處理,torndb使用起來相對更加簡潔一些,需要的朋友可以參考下2015-11-11

