スポンサーリンク

別ファイルのBlender Pythonスクリプトをimportして使い回す

一つのファイルに全ての関数やクラスを入れてしまうとあまりに見通しが悪くなるのでファイルを分けたい。

自分のスクリプトを入れるディレクトリの設定

Edit → Preference → File Paths → Data → Scripts にディレクトリを設定する。注意点はディレクトリ名が\modules , \addons … でなければいけない。

ここではimportしたいので、\modulesディレクトリを作り、そのディレクトリの親ディレクトリを指定する。

\modules\  ディレクトリの中のファイル名(拡張子除)がモジュール名になり、これをimportすれば中の関数を呼び出すことができる。

外部にモジュールを置き、blenderスクリプトから呼び出す

import test

test.call()

更新できるようにする(メインのファイル)

このままだと、上記test.pyを更新する度にBlenderを再起動しなければならない。実行する度に再読み込みを行うには再読み込み命令をスクリプトに書く必要がある。importlib.reload( モジュール名 )を呼び出す。

import test

#############################
## リロード
import importlib
importlib.reload(test) #モジュール名を指定
##
#############################

test.call()

更新できるようにする(関連するファイル)

上記test.pyがさらに内部で別のモジュールをimportしていた場合、それらは更新されない。これを更新するためには、testモジュール内部で使用する外部モジュールをimportlib.reloadする必要がある。

modules/test.py

import neighbour # 別ファイル neighbour.py
import importlib # reload用

# blenderから呼ばれる
def call():

  importlib.reload(neighbour) # neighbour.pyの再ロード
  neighbour.hello()

modules/neighbour.py

def hello():
  print("neighbour.py is updated")

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: