我在Win7 x64机器上运行Anaconda Python 2.7并使用
pip install PyOpenGL PyOpenGL_accelerate
在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()
我通过在命令行输入以下内容来运行:
python main.py peaucellier.txt
然后得到以下错误(第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
我已经看过这个论坛中发布的类似错误,但是没有一个提议的修复工作正常,这就是我要问的原因,这里有什么问题?
安装是否有问题?进口是否正确?
编辑:在为官方发布版本尝试了许多修复程序之后,我现在使用的是一个非正式的版本,可以从Unofficial Windows Binaries for Python Extension Packages完美地运行答案 0 :(得分:12)
在寻找类似问题的解决方案之后,我遇到了这个回答问题的Google群组:https://groups.google.com/forum/#!topic/glumpy-users/aC1NjEHXtEE
当从官方来源下载为pip时,OpenGL.GLUT存在问题。使用pip
卸载OpenGL,然后从http://www.lfd.uci.edu/~gohlke/pythonlibs/
答案 1 :(得分:10)
根据以下链接,问题在于过剩而不是pip install
。似乎过剩文件不属于PyOpenGL或PyOpenGL_accelerate包。你必须单独下载它们。
https://stackoverflow.com/a/39181193/7030177
Windows用户可以使用以下链接下载给定链接中提到的过剩。 ftp://ftp.sgi.com/opengl/glut/glut3.html.old#windows
Linux用户只需使用以下命令安装过剩:
sudo apt-get install freeglut3-dev
希望这会有所帮助:)
答案 2 :(得分:7)
Linux上的人在通过easy_install PyOpenGL
或pip install PyOpenGL
安装后出现此错误。
- &GT;将分发包安装为:sudo apt-get install python-opengl
- 这对我来说是 。
答案 3 :(得分:6)
If installing PyOpenGL from easy_install, pip or conda,确保您已经安装了GLUT实现,例如FreeGLUT(prebuilt Windows binaries)。
对于FreeGLUT,将分布式文件复制到硬盘驱动器上的某个位置,然后将bin目录(包含GLUT DLL)的路径添加到PATH环境变量中。然后PyOpenGL应该按预期工作。
答案 4 :(得分:2)
对于python 2.7,PyopenGL需要vc ++ 9编译器,download并安装它。
然后:
python -m pip install --upgrade pip
pip install image
pip install numpy
pip install PyOpenGL PyOpenGL_accelerate
我下载了freeglut
解压缩并将bin目录添加到路径中
致电时:glutCreateWindow("sometitle")
已更改为glutCreateWindow(b'sometitle')
并在Windows 7上运行
答案 5 :(得分:2)
是的,在Windows 10上运行python 2.713 anaconda 4 64位时发生了这种情况。我曾使用conda来安装pyopengl,但收到了与上面相同的错误。所以我从transmissionzero下载了freeglut,只是将freeglut.dll(我的64位)复制到与我的源文件相同的目录(它只需要在dll搜索路径中),一切都很好。
答案 6 :(得分:1)
这主要是因为您正在运行 64-bit
windows put pip 正在安装 32-bit
版本的 PyOpenGL。
要解决此问题,请按以下步骤操作:
卸载现有的 PyOpenGL,运行 pip uninstall PyOpenGL PyOpenGL_accelerate
从这里下载 PyOpenGL 和 PyOpenGL 加速的 64 位版本:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl
如何选择下载哪一个?好吧,首先你需要检查你的python版本。运行 python --version
来确定。
然后根据您的版本下载 PyOpenGL 和 PyOpenGL 加速的 whl 文件。例如,如果您有 Python 3.8
,请下载以下 2 个文件:
PyOpenGL‑3.1.5‑cp38‑cp38‑win_amd64.whl
PyOpenGL_accelerate‑3.1.5‑cp38‑cp38‑win_amd64.whl
同样,如果您运行 Python 3.9
,请改为下载这些:
PyOpenGL‑3.1.5‑cp39‑cp39‑win_amd64.whl
PyOpenGL_accelerate‑3.1.5‑cp39‑cp39‑win_amd64.whl
注意:必须下载 amd64
个,毕竟您运行的是 64 位 Windows。
现在转到您下载文件的文件夹,并在那里以管理员身份运行 powershell/cmd。
使用 pip 强制安装这些文件。例如:
pip install PyOpenGL-3.1.5-cp38-cp38-win_amd64.whl --force-reinstall
pip install PyOpenGL_accelerate-3.1.5-cp38-cp38-win_amd64.whl --force-reinstall
注意:先安装 PyOpenGL,再安装 PyOpenGL_accelerate
需要确认的一些事实:
*所有平台的位版本必须相同。
*系统类型、python、OpenGL 需要是相同的位版本。就我而言,它是 x64
位
*如果您重新安装其中任何一个(Python、OpenGL),则必须重新启动桌面
*建议将您的 pip 版本保持在 20.3
,我已将其从 21.1.3
降级
答案 7 :(得分:0)
我知道有点晚了。我在Windows中也遇到了python 2.7(32位)这个问题。我尝试了user2723240提到的方法,但仍然失败了。最后,我通过将glue32.dll复制到C盘中的System32并将glue32.dll复制到我的源文件目录中解决了这个问题。它现在运作良好。
答案 8 :(得分:0)
我收到同样的错误并解决了从here安装所需文件的问题。
下载这些文件:
PyOpenGL-3.1.1-cp27-cp27m-win32.whl(如果您的计算机是32位,请下载)
PyOpenGL-3.1.1-cp27-cp27m-win_amd64.whl(如果您的计算机是64位,请下载)
PyOpenGL_accelerate-3.1.1-cp27-cp27m-win32.whl(如果您的计算机是32位,请下载)
PyOpenGL_accelerate-3.1.1-cp27-cp27m-win_amd64.whl(如果您的计算机是64位,请下载)
为64位安装这些 .whl 文件:
pip install PyOpenGL-3.1.1-cp27-cp27m-win_amd64.whl
pip install PyOpenGL_accelerate-3.1.1-cp27-cp27m-win_amd64.whl
为32位安装这些 .whl 文件:
pip install PyOpenGL-3.1.1-cp27-cp27m-win32.whl
pip install PyOpenGL_accelerate-3.1.1-cp27-cp27m-win32.whl
答案 9 :(得分:0)
在linux上,pyopengl模块尝试使用ctypes模块将glut库加载为简单&#39;过剩&#39;。根据ctypes文档,必须为loadLibrary例程提供完整的文件名。因此,我创建了一个与libglut.so的符号链接,并将其命名为“过剩&#39;一切正常。
答案 10 :(得分:0)
我的情况不同,Python 3.6和Windows 10.但完全相同的错误消息。尝试了以上所有解决方案,没有成功。
将WHL
文件从HERE
然后pip安装文件名。Whl
,不再有问题!
答案来自中文网站:Answer Link
答案 11 :(得分:0)