一つのファイルに全ての関数やクラスを入れてしまうとあまりに見通しが悪くなるのでファイルを分けたい。
Edit → Preference → File Paths → Data → Scripts にディレクトリを設定する。注意点はディレクトリ名が\modules , \addons ... でなければいけない。
ここではimportしたいので、\modulesディレクトリを作り、そのディレクトリの親ディレクトリを指定する。
\modules\ ディレクトリの中のファイル名(拡張子除)がモジュール名になり、これをimportすれば中の関数を呼び出すことができる。
import test test.call()
このままだと、上記test.pyを更新する度にBlenderを再起動しなければならない。実行する度に再読み込みを行うには再読み込み命令をスクリプトに書く必要がある。importlib.reload( モジュール名 )を呼び出す。
import test ############################# ## リロード import importlib importlib.reload(test) #モジュール名を指定 ## ############################# test.call()
上記test.pyがさらに内部で別のモジュールをimportしていた場合、それらは更新されない。これを更新するためには、testモジュール内部で使用する外部モジュールをimportlib.reloadする必要がある。
import neighbour # 別ファイル neighbour.py import importlib # reload用 # blenderから呼ばれる def call(): importlib.reload(neighbour) # neighbour.pyの再ロード neighbour.hello()
def hello(): print("neighbour.py is updated")