You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端Pydroid 3中PyOpenGL导入失败求助:AttributeError问题

在Pydroid 3中解决PyOpenGL导入报错的方案

问题重现

导入PyOpenGL时触发如下错误:

Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/temp_iiec_codefile.py", line 3, in 
    from OpenGL.GL import *
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.9/site-packages/OpenGL/GL/__init__.py", line 4, in 
    from OpenGL.GL.VERSION.GL_1_1 import *
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.9/site-packages/OpenGL/GL/VERSION/GL_1_1.py", line 14, in 
    from OpenGL.raw.GL.VERSION.GL_1_1 import *
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.9/site-packages/OpenGL/raw/GL/VERSION/GL_1_1.py", line 7, in 
    from OpenGL.raw.GL import _errors
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.9/site-packages/OpenGL/raw/GL/_errors.py", line 4, in 
    _error_checker = _ErrorChecker( _p, _p.GL.glGetError )
AttributeError: 'NoneType' object has no attribute 'glGetError'

可行解决步骤

  • 安装Pydroid OpenGL ES插件:打开Pydroid 3,进入「菜单 -> 插件」,找到并安装「OpenGL ES Support」插件,安装完成后重启Pydroid。Android设备仅支持OpenGL ES,默认环境缺少底层支持库会导致该报错。
  • 替换为OpenGL ES导入语句:PyOpenGL默认调用桌面版OpenGL接口,需改用适配移动端的OpenGL ES绑定:
    # 替换原导入代码
    from OpenGL.GLES2 import *
    
  • 安装适配ARM架构的PyOpenGL版本:通过Pydroid包管理器安装时,指定安装适配Android ARM架构的旧版本,避免兼容性问题:
    pip install PyOpenGL==3.1.5
    
  • 先初始化GL上下文再调用PyOpenGL:单独导入PyOpenGL会因无GL上下文报错,需先通过Pygame或SDL2创建窗口并初始化上下文。示例代码:
    import pygame
    from pygame.locals import *
    from OpenGL.GLES2 import *
    
    pygame.init()
    display = (800, 600)
    pygame.display.set_mode(display, DOUBLEBUF|OPENGL)
    
    # 后续可编写OpenGL渲染逻辑
    

内容的提问来源于stack exchange,提问作者turtlelover891

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 23:31:13