1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BlenderPythonで外部モジュールをImportする方法

Last updated at Posted at 2024-05-14

(結論)忙しい人のために

下記のpackage_nameを必要なモジュール名に変更して、管理者としてコマンドを実行するとBlenderPythonにモジュールをインストールすることができます。

"C:/Program Files/Blender Foundation/Blender 4.1/4.1/python/bin/python.exe" -m pip install package_name

BlenderPythonの仕様

標準ライブラリの一覧を取得

まず初めに、BlenderPythonと一般的なPythonの標準ライブラリに違があるかどうかを調べるために、以下のコードをそれぞれの環境で実行し、その差を調べました。

import sys

mod_bl = sys.modules.keys()
print(mod_bl)

標準ライブラリの違い

今回は特に、一般的なPythonの環境には含まれていて、BlenderPythonには含まれていない標準ライブラリを調べることを前提に、比較したところ、以下のような結果となりました。

モジュール 機能 (ChatGPTによる回答)
_codecs_jp Pythonの内部で使用されるコーデック(文字コード変換用のエンコーダとデコーダ)の1つです。特に、日本語の文字コードに関連するコーデックを提供します。
_multibytecodec Pythonの内部で使用されるマルチバイト文字列のエンコーディングとデコーディングに関するコーデックを提供します。これには、多くのアジア圏の言語で使われる文字コードへの対応も含まれます。
encodings.cp932 Windowsで一般的に使用される文字コードであるCP932(またはShift-JIS)に関するエンコーディングとデコーディングを提供するコーデックです。日本語のテキストファイルなど、CP932でエンコードされたデータを扱う際に使用されます。
pywin32_system32 PythonでWindowsシステムの機能にアクセスするためのモジュールです。このモジュールには、Windowsのシステム関連の機能やAPIにアクセスするための関数が含まれています。
pywin32_bootstrap pywin32パッケージの一部であり、Windows上のPythonでWin32 APIへのアクセスを提供します。これにより、Windowsシステムとの相互作用やシステムレベルのタスクをPythonから実行することができます。

実行の結果、主に文字コード関係のモジュールがBlenderには含まれていないことが分かりました。実際にBlenderPythonは日本語の入力に対応しておらず、使用できる文字コードが限定されていることが関係しているかもしれません。一方で、sysosなどのよく使用されるモジュールはBlenderPythonでも使用できることが分かります。

BlenderPythonで外部モジュールをimport

上記の実験で、通常のPythonとBlenderPythonでは標準ライブラリに大きな違いはないことが分かりました。ここでは、標準では含まれていないライブラリをBlenderPythonにimportする方法を紹介します。通常のPythonでは、python pip insatllでインストールを行っていますが、BlenderPythonの実行ファイルを環境変数に登録していないため、この方法ではBlenderPythonに変更を反映させることはできません。パスを環境変数に登録する方法も考えられますが、通常のPythonと競合する可能性があるため現実的ではありません。そこで、BlenderPythonのインタープリターの実行可能なファイルを直接指定することで実現します。

"C:/Program Files/Blender Foundation/Blender 4.1/4.1/python/bin/python.exe" -m pip install package_name --no-warn-script-location

※コマンドプロンプトで実行する場合は、管理者としてコマンドプロンプトを起動して実行してください。
※"package_name"の部分を必要なモジュール名に変更して実行してください。
※バージョンによってはディレクトリのパスが異なる可能性があります。Program Files/Blender///python.exeのようにpython.exeファイルを環境に合わせて指定してください。

モジュールの動作確認

次に、実際に上記の方法でモジュールをインポートして、正しく動作することを確認します。今回は、Blenderとの相性が良さそうなOpenCVをインポートして実行確認します。

OpenCVのインストール

"C:/Program Files/Blender Foundation/Blender 4.1/4.1/python/bin/python.exe" -m pip install opencv-python --no-warn-script-location

画像の読み込みと表示

下記のプログラムをBlenderのスクリプトに記述し実行します。

import cv2

# 画像の読み込み
img = cv2.imread('C:/Users/cat.jpg')

# 画像の確認
cv2.imshow('Preview',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

実行結果(インストール前)

以下の画像のように、パッケージをインストールしていない状態で実行するとNo module named 'cv2'のようにエラーが表示されます。

run_result1.png

実行結果(インストール後)

OpenCVのパッケージを上記のコマンドを実行してインストールした後に実行すると、正しく動作することを確認できました。

run_result2.png

モジュールの削除

BlenderPythonで正しく動作しなかった場合に備えて、インストールしたファイルを削除する方法を提示しておきます。以下のコマンドを管理者として実行してください。

"C:/Program Files/Blender Foundation/Blender 4.1/4.1/python/bin/python.exe" -m pip uninstall package_name

Program Files/Blender///python.exeのようにpython.exeファイルを環境に合わせて指定してください。
※"package_name"の部分を適当なモジュール名に変更して実行してください。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?