どうも、ぼくです。

今回はBlenderのPythonで使えるモジュールを調べてみることにします。
やっていることはBlenderっぽくないですが、「Pythonの基本的なところを学習する環境としても使える」ということをわかってもらえるといいんじゃないでしょうか。

以下のBlog記事で紹介されているものをBlender上のPython Interactive console上で、というわけですね。


ロード済みモジュールを確認:


ロード済みモジュールを確認するには、 sys.modules.keys() を実行します。

>>> import sys
>>> sys.modules.key()



利用可能なモジュールを確認:


Blenderに同梱されているPythonのライブラリは、「標準ライブラリ(流石にTKはありません)」+αです。これを一覧で確認します。


>>> buf=[]
>>> for m in pkgutil.iter_modules():
... buf.append(m[1])
...
>>> buf.sort()
>>> buf


これで確認してみると…。xmlrpcとかnumpy…えっ?numpy???



「何をするものか」を確認:


さて、一覧が取得できても、個々に「何をするもの」かまでは名前からだけではわかりません。そこで help() 関数。 以下のように実行してみます。

>>> import xmlrpc
>>> help(xmlrpc)
Help on package xmlrpc:
NAME
xmlrpc - # This directory is a Python package.
PACKAGE CONTENTS
client
server
FILE
/Applications/Blender/blender.app/Contents/Resources/2.74/python/lib/python3.4/xmlrpc/__init__.py


パッケージやモジュール、関数に help() 関数を使ってみると説明が表示されるので良さげです。


ここで、落とし穴。 BlenderのInteractive Python Consoleは表示できる行が決まっていて(デフォルト256行)、help(numpy) とか help(unittest) とか長い内容の表示は全部できずに(先頭が)切れてしまいます。これを変更するには Console Scrollback の値を増やします。

[Add-on]自分で作ったAdd-onに追加のモジュールが使えるかどうかで機能を変える:


Pythonは自身で書いた .py ファイルをモジュールとして使用することが可能です。Add-onで、特定のパッケージまたはモジュールがインポート可能な時のみ特定機能を使用可能にする、というのを submitwordpress.py で使っていたりします。

kanaflg = False
# import romankanatbl as extention
try:
import romakanatbl.romakanatbl as rk
kanaflg = True
print("[SubmitWordPress] romankana extention is available.")
except:
print("[SubmitWordPress] no romankana extention.")


try文の中で import 文を実行して登録できるかをやっているわけですね。


あと、「モジュールとして登録できるファイルは一体どこに?」とかは最初に紹介したBlog記事を参考にしてスクリプトを実行するか、 メニュー、Help > System Info で出力されるテキストから、 Directories あたりの項目をチェックしておけばいいんではないでしょうか。


では。