PythonのOpenGLライブラリ「PyOpenGL」はPython3系では動かないのね

環境構築手順を更新しました。

Pythonに興味津々な僕は日々思いついたことに手を出しています。フレームワークのDjangoFlaskもそう。

ある日はふと「PythonでOpenGLって使えるのかな?」と思って調べてみたらある!本当にPythonはライブラリが豊富なんですね。

というわけで、PyOpenGLを使ってみて僕が学んだことをまとめます。結果としては動きはしましたが、「?」な部分もあるという状態です。

開発環境

  • OS1:macOS Sierra 10.12.3
  • OS2:Ubuntu 16.04.2 LTS on Parallels Desktop
  • Anaconda Python 3.6 version
  • PyOpenGL 3.1.0

PyOpenGLのインストール

$ pip install PyOpenGL PyOpenGL_accelerate

$ pip install PyOpenGL-Demo
※デモファイルをインストールしたい場合

なお、デモファイルの動作を確認する前にコピーさせていただいたソースがあり、動作確認をしたときに謎なことが。

参考:pyOpenGLを使って分子動力学を可視化 – Python in the box

R0000984

macOSで動作確認

謎の赤線

macOSのVisual Studio Codeで赤ラインだらけ。flake8やpylintが検知したエラーです。ひーーーって叫びたくなります。

20170320a-1

でも実際には動くんですよ。

20170320a-2

「なんで?エラー出てるのに動くの?そういうもんなの?それでいいの?なんでいいの?」ですよ。

加えて、プロセスを止めるためにctrl+cしたら、Terminalにたぶん良くはない状況が映し出されてる。

20170320a-3

ここまでで気づいたこと

  • PyOpenGLは「pip3」でインストールすべきだったのか?(Macには2.6/2.7が入っているからpipと入力しただけでは2系として動いているとの情報あり)
  • ではpip3ってどうやってインストールするの?
  • もしかして2to3でpyOpenGLをコンバートする必要があるの?

よくよく考えてみると、pipはPython3系のAnacondaに組み込まれています。「conda list」と入力すると出てきますし、「python -V」や「which python」と入力してもAnacondaのそれを指し示します。

ということは、pipと入力しても2系で動くとは考えにくい。

R0000986

Ubuntuで動作確認

謎の赤線なし

次に仮想環境内のUbuntuでも同じことをやってみました。こっちならどうなるんだろう、という疑問からです。すると・・・

「GULTがない!」

と怒られる。

ナニソレ?

GLUTとはOpenGLを使う上でOSのなにがしを整えるものらしい。JavaのVMみたいなものですかね。調べてみたらfreeglut3を発見したので、それをインストールすることに。

$ sudo apt-get install freeglut3 freeglut3-dev

結果、無事に動いたうえにVisual Studio Codeの赤ラインが綺麗さっぱりなくなった!スッキリ!

ここまででわかったこと

「macOSでもGULTを整えればよいのではないか?」ということ。

早速以下を参考に調べてみましたがPythonで使うためにどうこうするではなくて、今の僕では結果としてよくわからずのまま試合終了です。

参考:GLUTによる「手抜き」OpenGL入門

とはいえ、このままスッキリしないままでいるのもいやなので、本家のデモであるPyOpenGL-Demoを動かしてみることにしました。

ところが、PyOpenGLはPython2系で書かれているようで動かないというね。ちくちょー!

諦めきれない僕は次に、Python2系のソースコードを3系にコンバートしてくれる「2to3」というツールをPyOpenGLにかけてみました。

さぁどうだ!?

ダメだー!!

・・・というところで力尽きました。スッキリできなかった。

R0000985

おわりに

PyOpenGLを使ってみようとして戦った数時間の軌跡をまとめるとこちら。

  1. まだまだPython2系で動くライブラリが豊富という状況なんですねチクショウめ!
  2. Anacondaのpipでインストールしたパッケージは全てAnaconda配下にまとめられて分かりやすい。
  3. pipには2系と3系がある。
  4. pipコマンドのオプション。
  5. ついでにbrewコマンドのオプション。(なんでこの流れになったのか思い出せない)
  6. 2to3は良いんだか悪いんだか判断できない。
  7. GLUTというOpenGLを各環境で動かすためのなにがしがある。
  8. デモは動かせなかったけど、そのためにとった行動の一つ一つが僕には楽しい、ということ。

2系と3系の差にはしてやられましたが、僕の中で何も進んでいないかというとそうでもないんですよ。

デイル・ドーテン著「仕事は楽しいかね?」に登場するすごいおじさん、マックス・エルモアが言っています。

『試してみるところに失敗はない』

やることに意味があります。たとえそれがダメだったとしても、それで元いた位置に戻るかと言えばそうじゃないんです。

告知:Pythonもくもく会 in Knower(s)

スッキリしなかった僕がスッキリさせるためにやる(だけが理由ではありませんが笑)「Pythonもくもく会」を松本市のコワーキングスペースKnower(s)で開催!

【長野・松本藩】第3回 Pythonもくもく会 – connpass

  • 日時:2017年3月26日(日)14:00〜17:00
  • 場所:長野県松本市のコワーキングスペースKnower(s)
  • 参加費用:500円
  • 持ち物:PC、書籍など各自の勉強に必要なもの

一緒にもくもくすることで刺激になります!ご参加お待ちしています!

書籍紹介

編集後記

2017年4月:PyOpenGLが使えるようになりました!

2019年2月:環境構築手順を新たに整理しました!

【出張撮影のご依頼、承ってます】

あなたの行きたい場所に出張してポートレイトやプロフィール写真を撮影します。出張エリアは関西エリア(神戸・大阪・京都など)、関東エリア(神奈川、東京など)です。

★詳細:ポートレイト/プロフィール撮影(Photo Session)
★詳細:Photo Shooting

撮影予約可能日

【関西エリア】
・5月以降しばらく関西にいます。ご依頼お待ちしています!

【関東エリア】
・未定ですがご要望とあれば伺います

申し込みフォーム

★ポートレイト/プロフィール撮影を依頼する
★Photo Shootingを依頼する

ピンときた方、まずはお問い合わせください。お待ちしています!
  • コピー

この記事を書いた人

花村貴史|Takashi Q. Hanamura

人物や風景、街並み、小物を好んで撮っている空気感フォトグラファー。本職であるPhotographerのかたわら、Engineer、Creatorとしても活動中。
その人・その場の「空気感をそっとすくい撮る」写真が好評。「自分の素敵に気づける写真」を撮る。数年間の心のお稽古によるカウンセラーマインドによって、撮影は「心のセッション」になることも。
オシゴトについては「メニュー/料金/予約」からどうぞ。

この記事が気に入ったら
いいね!しよう

最新の情報をお届けします

撮影|Photo Session

お話しながらのポートレイト撮影です。「今」そして「これから」のあなたにフォーカスして撮影します。SNSやサイト用のプロフィール写真に。

撮影|Photo Shooting

「友達と楽しんでいる」「セミナーで講演している」「パーティーを主催している」など、皆さんが大切な時間を過ごしている瞬間をスナップします。

写真術|Photo Lecture

カメラの使い方、撮影術、Lightroomの使い方などの「マンツーマンレクチャ」や「少人数制のワークショップ」について。写真に関する疑問の解決に。

販売:Photo Sales

A3ノビ〜A4程度のサイズの額装販売および、壁紙などの写真データの販売。ご自宅やコミニュティスペースに飾り、癒しになれば嬉しい。