本日は Blender と python の環境構築枠です。
blenderのpythonで外部ライブラリを利用する方法を記事にします。
Blenderでのpythonの外部ライブラリの参照
Blender 上で実行される ptyhon は以下のディレクトリに含まれる Blender 内の python です。
・blender-2.79-windows64\2.79\python\bin
このため、Blender の ptyhon の外部ライブラリを利用する場合はこちらに参照を追加する必要があります。
(予め取り込まれている外部ライブラリも幾つかあります)
今回は以下の記事で作成した OpenCV のスクリプトをサンプルに利用します。
bluebirdofoz.hatenablog.com
pipのインストール
インストールの手順を簡略化するため、まずは以下の手順で Blender に pip のインストールを行います。
WindowsPowerShell を起動し、Blender のインストールディレクトリに移動します。
cd D:\BlenderDir\blender-2.79-windows64\2.79\python\bin
以下のコマンドを実行し、pip インストール用のスクリプトを取得します。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
対象の URL は TLS 1.2 のみに対応しています。
PowerShell のセキュリティプロトコルを確認し、Tls12 の表記がなければこれを設定する必要があります。
セキュリティ設定は PowerShell を再起動すると元に戻ります。
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
ディレクトリに get-pip.py がダウンロードされました。
この状態で以下のコマンドを実行し、get-pip.py スクリプトを実行します。
注意点として、必ず Blender ディレクトリの python\bin 直下にある python.exe でスクリプトを実行します。
.\python.exe .\get-pip.py
すると python\Scripts ディレクトリが作成されて pip 関連のバイナリがインストールされます。
pip でインストールしたライブラリは python\lib\site-packages ディレクトリに保存されます。
もしライブラリが見当たらない場合は以下の手順で python.exe が参照しているシステムパスを確認できます。
注意点として、必ず Blender ディレクトリの python\bin 直下にある python.exe で python を起動します。
.\python.exe import sys print(sys.path)
blenderへの外部ライブラリのインストール
pip のインストールを完了したら以下のコマンドで opencv-python のインストールを実行します。
注意点として、必ず Blender ディレクトリの python\bin 直下にある python.exe で pip を実行します。
.\python.exe -m pip install -U opencv-python
すると以下の通り、python\lib\site-packages 配下に opencv_python のライブラリが追加されました。
インストール時に以下のエラーが発生することがあります。
ERROR: could not install packages due to an environmenterror [WinError 5] アクセスが拒否されました。
これはライブラリの上書きエラーです。
Blender を起動したままで本コマンドを実行すると、ライブラリの上書きができず、エラーとなります。
エラー回避のため、Blender の python ライブラリをインストールする際は Blender を終了しておきます。
スクリプトの実行
opencv_python のライブラリをインストールした状態で先ほどのスクリプトを Blender 上で実行してみました。
すると以下のエラーが発生しました。
from .cv2 import * ImportError: numpy.core.multiarray failed to import
エラーを追跡すると、2つのバージョンの numpy が競合してエラーが発生していました。
これは Blender には予め numpy のライブラリが組み込まれているためです。
競合を解消するため、以下のコマンドで一旦 numpy をアンインストールします。
.\python.exe -m pip uninstall numpy
その後、numpy を再インストールすると競合が解決されました。
この状態で先ほどのスクリプトを再度、Blender 上で実行してみると……。
エラーが発生することなく実行できました。
openCV により2つの画像が合成されています。