Blender 2.65aをコンパイルしてpython module版を作成


(Updete 2013-3-27:Ver 2.66a同じようにコンパイル成功、出力先フォルダ名がbuildからbuild_linuxへ変更。 blendファイルを保存するAPI, bpy.ops.wm.save_mainfile()のcrashは修正された。)
(Updete 2013-6-4:Ver 2.67a/Ubuntu13.04同じようにコンパイル成功)
Blenderのpluginを本格的に開発しようとすればBlenderのpython moduleが必要と感じるはずだ。理由はデバックやEditor(IDE)が便利になるからだ。以下はその情報と注意を記した。
(手軽にBreakPointをしたい場合はhttp://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Development/BreakPointがいいが、さらに素早く詳細に調べる場合はbpy moduleが必須である)

以下のサイトの手順が成功した。 他のubuntu wikiなどは古く、手順も複雑でさらにコンパイルに失敗(ボクの場合)した。

コンパイル:
http://wiki.blender.org/index.php/User:Ideasman42/BlenderAsPyModule


リンク先の手順はUbuntu repositryからpython3.3のdevパッケージがインストールされるので、python3.3はソースをダウンロードしてコンパイルする手間は不要。それをした場合は最後の最後にコンフリクトをおこしてコンパイル(というかLinker)が失敗になる。(e.g. relocation R_X86_64_32S against `_Py_NotImplementedStruct' can not be used when making a shared object; recompile with -fPIC)

すでに自分でコンパイルしたpythonは/usr/localから地道に手作業で消さなければならない(python3.3のソースにはmake uninstallなどの自動アンインストールは現在無いからだ)

参考までに以下のフォルダー内にインストールされているが、ここを消せばコンパイル成功する。が、他にもいろいろインストールされているので全てではない。
/usr/local
includeのpython3.3の部分
bin "
lib "
man "
python3.3関係ファイルを消すこと。目印はインストールされた日時。 ただし、自己責任でお願いする。

成功するとbuild/bin内にbpy.so が出来ている。

インストール:
リンク先にはmake install or 手動と書いてあるが、実際にはmake installをしないとbuild/bin/2.65/のフォルダが作られないので、両方必要と思われる。
ただし、手動でのインストール先はdebian(ubuntu)のポリシーから、以下のようになると思う。
cp ./bin/bpy.so /usr/lib/python3/dist-packages/
cp --recursive ./bin/2.65 /usr/lib/python3/dist-packages/
 リンク先の説明(/usr/lib/python3/dist-packages/site-packages/)と同じにしたい場合はsys.pathへ追加が必要。

テスト:
python3.3 -c "import bpy ; bpy.ops.render.render(write_still=True)"
エラーが色々表示されるが、一応動作はFinishされている。

環境:
Ubuntu12.10 64bits(オリジナルと異なりKernel3.7.3現在最新stableを使っているが関係無いだろう)


これはeclipse+PyDevの開発環境ですが、bpyやmathutilsにundefinedのエラー表示がありません。当たり前ですがDebuggerも動きます。素晴らしい!

P.S.1
blenderソースはsvn(gitになれ!)から取得したものとBlender2.65aのソース両方を試したが、後者のみコンパイル成功した。予想だがsvn版は開発中コードも含まれるので不安定なのかもしれない。

P.S.2
Python3ディフォルトをpython3.2.xからPython3.3へ変更するには...(これは非推奨で、Python3.3として実行を選んだほうがいい)
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.3 1
sudo update-alternatives --config python3で選択

注意、これをおこなうとSystem Settings...->Software Sourcesなどが起動しなくなるので注意。理由はPython3.3のUbuntu extensionであるpython-aptがないからである。解決するにはRaring Ringtail(13.04)を待たなければならない。

P.S.3
bpy.soの次はblender mathutils.soをコンパイルすることになるが、今公開中なのはエラーがあって苦労した。その記事は後日書いた。 P.S.4 mesh_show_vgroup_weights.pyなどをローカルpluginにインストールするとimport bpyが失敗することがあるので可能な限りDefault plugin状態にしておくこと。必要ならば場合はそれぞれのBlenderフォルダ内script/addonへインストールすればいい。

P.S.5
bpy.ops.wm.open_mainfile(filepath="/home/user/test.blend")などがcore dumped(crash)する場合は~/.config/blender内の使っているフォルダ(e.g. 2.65/)を消してディフォルトに戻せば動作した。理由はちょと考えればわかるだろう。

コメント

このブログの人気の投稿

日本でコンピュータサイエンスを学ぶ難しさ

How to preview nif file on the ubuntu.