PyOpenGL glutInit NullFunctionError

DrB*_*wts 21 glut pyopengl python-2.7

我在Win7 x64机器上运行Anaconda Python 2.7并使用

pip install PyOpenGL PyOpenGL_accelerate
Run Code Online (Sandbox Code Playgroud)

在Anaconda命令行安装PyOpenGL.

我有一些使用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()
Run Code Online (Sandbox Code Playgroud)

我通过在命令行输入以下命令来运行:

python main.py peaucellier.txt
Run Code Online (Sandbox Code Playgroud)

但后来得到以下错误(第371行是上面的glutInt(sys.argv)行)

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
Run Code Online (Sandbox Code Playgroud)

我看过这个论坛中发布的类似错误,但没有提出修复工作,这就是为什么我在问,这里有什么问题?

安装有问题吗?进口是否正确?

编辑:在为官方发布版本尝试了许多修复程序之后,我现在使用非官方发行版,它非常适用于Python扩展程序包的非官方Windows二进制文件

小智 15

根据下面的链接,问题是安装过剩而不是pip install.看来glut文件不是PyOpenGL或PyOpenGL_accelerate包的一部分.你必须单独下载它们.

/sf/answers/2742683541/

Windows用户可以使用下面的链接来下载给定链接中提到的过剩. ftp://ftp.sgi.com/opengl/glut/glut3.html.old#windows

Linux用户可以使用以下命令安装过剩:

sudo apt-get install freeglut3-dev
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)

  • FTP 链接不再托管。 (3认同)
  • 在 GNU/Linux 下安装 freeglut3 就足够了。 (2认同)

use*_*240 12

在寻找类似问题的解决方案后,我遇到了这个回答问题的谷歌小组:https://groups.google.com/forum/#!topic/gllumpy-users/aC1NjEHXtEE

从官方来源下载为pip时,OpenGL.GLUT存在问题.使用卸载OpenGL pip,然后从http://www.lfd.uci.edu/~gohlke/pythonlibs/下载OpenGL


pds*_*pds 7

对于安装了easy_install PyOpenGL或通过安装后出现此错误的Linux用户pip install PyOpenGL.

- >将分发包安装为:sudo apt-get install python-opengl- 这对我有用.


Gna*_*nat 6

如果从easy_install,pip或conda安装PyOpenGL,请确保已经安装了GLUT实现,例如FreeGLUT(预构建的Windows二进制文件).

对于FreeGLUT,将分布式文件复制到硬盘驱动器上的某个位置,然后将bin目录(包含GLUT DLL)的路径添加到PATH环境变量中.然后PyOpenGL应该按预期工作.


Joy*_*dal 6

这主要是因为您运行的是64-bitWindows put pip 正在安装32-bitPyOpenGL 版本。

\n

要解决此问题,请按照下列步骤操作:

\n
    \n
  1. 卸载现有的PyOpenGL,运行pip uninstall PyOpenGL PyOpenGL_accelerate

    \n
  2. \n
  3. 从此处下载 PyOpenGL 和 PyOpenGL 加速的 64 位版本:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl

    \n
  4. \n
  5. 如何选择下载哪一个?好吧,首先你需要检查你的 python 版本。运行python --version确定。\n然后根据您的版本下载PyOpenGL和PyOpenGL加速的whl文件。例如,如果您有Python 3.8,请下载这两个文件:

    \n
  6. \n
\n

PyOpenGL\xe2\x80\x913.1.5\xe2\x80\x91cp38\xe2\x80\x91cp38\xe2\x80\x91win_amd64.whl

\n

PyOpenGL_accelerate\xe2\x80\x913.1.5\xe2\x80\x91cp38\xe2\x80\x91cp38\xe2\x80\x91win_amd64.whl

\n

同样,如果您运行Python 3.9,请下载这些:

\n

PyOpenGL\xe2\x80\x913.1.5\xe2\x80\x91cp39\xe2\x80\x91cp39\xe2\x80\x91win_amd64.whl

\n

PyOpenGL_accelerate\xe2\x80\x913.1.5\xe2\x80\x91cp39\xe2\x80\x91cp39\xe2\x80\x91win_amd64.whl

\n

注意:必须下载amd64,毕竟您运行的是 64 位 Windows。

\n
    \n
  1. 现在转到下载文件的文件夹并以管理员身份运行 powershell/cmd 。

    \n
  2. \n
  3. 使用 pip 强制安装这些文件。例如:

    \n
  4. \n
\n

pip install PyOpenGL-3.1.5-cp38-cp38-win_amd64.whl --force-reinstall

\n

pip install PyOpenGL_accelerate-3.1.5-cp38-cp38-win_amd64.whl --force-reinstall

\n

注意:先安装PyOpenGL,再安装PyOpenGL_accelerate

\n
    \n
  1. 如果安装成功,您现在就可以运行了。
  2. \n
\n

需要确定的一些事实:

\n

*所有平台必须具有相同的位版本。

\n

*系统类型、python、OpenGL需要是同位版本。就我而言,x64有点

\n

*如果重新安装其中任何一个(Python、OpenGL),都需要重新启动桌面

\n

*建议保留你的pip版本20.3,我从21.1.3

\n

  • 最佳答案,唯一适合我的答案!谢谢。 (2认同)