web-dev-qa-db-ja.com

PyOpenGL glutInit NullFunctionError

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

私はこのフォーラムに投稿された同様のエラーを見ましたが、提案された修正のどれも機能していないので、私が尋ねている理由は何ですか?

インストールに障害がありますか?インポートは正しいですか?

編集:公式リリースの多くの修正を試みた後、私は今、 非公式WindowsバイナリPython拡張パッケージ

20
DrBwts

以下のリンクによると、問題はpip installではなくglutインストールにありました。 glutファイルはPyOpenGLまたはPyOpenGL_accelerateパッケージの一部ではないようです。それらを個別にダウンロードする必要があります。

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

Windowsユーザーは、以下のリンクを使用して、指定されたリンクに記載されているように、glutをダウンロードできます。 ftp://ftp.sgi.com/opengl/glut/glut3.html.old#windows

Linuxユーザーは、次のコマンドを使用してglutをインストールできます。

Sudo apt-get install freeglut3-dev

お役に立てれば :)

13

同様の問題の解決策を探した後、私は質問に答えるこのグーグルグループに出くわしました: https://groups.google.com/forum/#!topic/glumpy-users/aC1NjEHXtEE

公式ソースからpipとしてダウンロードすると、OpenGL.GLUTに問題があります。 pipを使用してOpenGLをアンインストールしてから、 http://www.lfd.uci.edu/~gohlke/pythonlibs/ からOpenGLをダウンロードします。

12
user2723240

Linuxの場合easy_install PyOpenGLまたはpip install PyOpenGLを介してインストールした後、このエラーが発生します。

->配布パッケージを次のようにインストールします:Sudo apt-get install python-opengl-これは動作しますfor me

7
pds

easy_install、pip、またはcondaからPyOpenGLをインストールする場合 、FreeGLUTなどのGLUT実装が既にインストールされていることを確認してください( prebuilt Windows binaries )。

FreeGLUTの場合、配布されたファイルをハードドライブ上の場所にコピーし、binディレクトリ(GLUT DLLを含む)へのパスをPATH環境変数に追加します。その後、PyOpenGLは期待どおりに動作するはずです。

6
Gnat

はい、これはWindows 10でpython 2.713 anaconda 4 64ビットを実行しています。pyopenglをインストールするためにcondaを使用しましたが、上記と同じエラーを受け取りました。 freeglut.dll(私にとっては64ビット)をソースファイルと同じディレクトリに(dll検索パスに入れるだけで)すべてうまくいきました。

2
rhoids

for python 2.7、PyopenGLにはvc ++ 9コンパイラが必要です。 ダウンロード をインストールします。

その後:

_python -m pip install --upgrade pip

pip install image

pip install numpy

pip install PyOpenGL PyOpenGL_accelerate
_

ダウンロードしました freeglut

それを解凍し、呼び出し時にパスにbinディレクトリを追加しました:glutCreateWindow("sometitle") changed to glutCreateWindow(b'sometitle')

windows 7で実行しました

2
Mamuka Arabuli

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ビットの場合はダウンロード)

これらの。whlファイルを64ビット用にインストールします。

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

これらの。whlファイルを32ビット用にインストールします。

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

私はそれが少し遅れていることを知っています。また、Windowsでpython 2.7(32ビット)でこの問題が発生しました。user2723240に記載されている方法を試しましたが、まだ失敗しました。最後に、glue32.dllをCソースファイルディレクトリにglue32.dllをドライブしてコピーします。

0
ccy

次のコマンドは、Anacondaユーザーに対して機能するはずです。

conda install -c conda-forge freeglut

https://anaconda.org/conda-forge/freeglut

0
Nirmal

Python 3.6とWindows10。ただし、まったく同じエラーメッセージ。上記のすべてのソリューションを試してみましたが、成功しません。WHLファイルをpython from [〜#〜] here [〜#〜]

その後、pipはfilename .Whlをインストールします。これ以上の問題はありません!

答えは中国のウェブサイトからでした: 回答リンク

0
Mars Carl

Linuxでは、pyopenglモジュールはctypesモジュールを使用して、glutライブラリを単に「glut」としてロードしようとします。 ctypesのドキュメントによると、loadLibraryルーチンには完全なファイル名を指定する必要があります。そのため、libglut.soへのシンボリックリンクを作成し、「glut」と名付けました。

0
Travis