以下の内容はhttps://redhologerbera.hatenablog.com/entry/2024/10/10/225643より取得しました。


BlenderPythonでコードから動的にpip installする

本日はBlender,Python枠です。

今回はBlenderPython内で動的にpip installを行う方法を知りましたので残していきます。

〇環境

Windows 11PC

・Blender4.1

PythonコードからPip install

Pythonコード内からPip installを行うためには次のような関数を定義し実行します。

def install_package(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", package])

この処理ではsubprocessを使用してパッケージをインストールしています。

ubprocess.check_callは、指定されたコマンドを実行し、そのコマンドが正常に終了するまで待機します。コマンドがエラーを返した場合、例外が発生します。

sys.executablePythonの実行パスを返します。

どのあと引数をコマンドとして実行しています。

これは事実上

python -m pip install package

と同じ処理になります。

packageに任意のライブラリを設定することでpip installが可能です。

本日は以上です。

〇コード全文

import os
import bpy
import subprocess
import sys

# BlenderのPython環境でのpipインストールのためのヘルパー関数
def install_package(package):
    subprocess.check_call([sys.executable, "-m", "pip", "install", package])

# BlenderのPython環境でのpipアンインストールのためのヘルパー関数
def uninstall_package(package):
    subprocess.check_call([sys.executable, "-m", "pip", "uninstall", "-y", package])

# アドオンが有効化される時に呼ばれる関数
def register():
    try:
        import music21  # 既にインストールされているかチェック
    except ImportError:
        install_package("music21")  # 無ければインストール
    
    print("アドオンが登録され、music21がインストールされました")
    gui.register() 
    # 通常のBlenderアドオンの登録作業
    bpy.utils.register_class(MyAddonClass)  # アドオンで使用するクラスを登録

# アドオンが無効化される時に呼ばれる関数
def unregister():
    # `music21` をアンインストール
    uninstall_package("music21")
    
    print("アドオンが解除され、music21がアンインストールされました")

    # 通常のBlenderアドオンの解除作業
    bpy.utils.unregister_class(MyAddonClass)  # アドオンで使用するクラスを解除
    gui.unregister()
# アドオンのクラス (例)
class MyAddonClass(bpy.types.Operator):
    bl_idname = "wm.my_addon"
    bl_label = "My Addon Operator"

    def execute(self, context):
        # アドオンの機能
        self.report({'INFO'}, "Hello from My Addon!")
        return {'FINISHED'}



以上の内容はhttps://redhologerbera.hatenablog.com/entry/2024/10/10/225643より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14