Python Embeddableを利用したTouchDesignerの便利な配布方法
Type
touchdesigner
python
windows
Description
Last edited time
2024/5/33:23
Created time
2024/5/33:16
PythonのEmbeddableパッケージを活用して、TouchDesignerのプロジェクトの配布をより簡易にする方法をご紹介します。この方法を採用することで、開発環境から納品用端末へ開発したtoeファイルをただコピーするだけで、納品用端末にPythonをインストールする手間が省けます。本記事では、Windows環境での手順に焦点を当てて解説します。
Python Embeddable packageのダウンロードpythonXX._ pthファイルの編集pipをインストールPythonライブラリのインストールTouch designerにライブラリのパスを設定
Python Embeddable packageのダウンロード
まずはじめに、PythonのEmbeddable packageをダウンロードします。ダウンロードはPythonの公式ウェブサイトから行うことができます。

ダウンロードしたEmbeddable packageの中身を、toeファイルのあるディレクトリにあるPythonフォルダにコピーします。

pythonXX._ pthファイルの編集
ここで注意点が一つ。ダウンロードしたPythonのバージョンに応じたpythonXX._pthファイルを編集する必要があります。その際には、’import site’のコメントアウトを外します。
python310.zip. # Uncomment to run site.main() automatically import site
Python
pipをインストール
次に、pipをインストールします。pipのインストールファイル、 🔗get-pip.pyをダウンロードし、TD-embeddable-python\pythonディレクトリに配置します。その後、このディレクトリに移動し、
.\python.exe get-pip.py
というコマンドを実行すると、pipがインストールされます。
Pythonライブラリのインストール
これで、ライブラリのインストールが可能になります。試しに、dateutilをインストールしてみましょう。これを行うためにはTD-embeddable-python\pythonディレクトリで
.\python.exe -m pip install python-dateutil
というコマンドを実行します。
Touch designerにライブラリのパスを設定
TouchDesignerではTD-embeddable-python\python\Lib\site-packagesにパスを設定します。今回は、TouchDesignerのスタート時に、システムパスにTD-embeddable-python\python\Lib\site-packagesへのパスを追加するように設定します。
DATのExecuteを使用し、TouchDesignerのStart時に、システムパスにTD-embeddable-python\python\Lib\site-packagesへのパスを追加します。
import sys import os def onStart(): mypath = os.path.abspath("./python/Lib/site-packages") if mypath not in sys.path: sys.path = [mypath] + sys.path debug(sys.path) return
Python
Textportでパスが追加されているか確認できます。

最後に、実際にdateutilを使用してみましょう。下記のコードをDATのTextに記入し、実行(CTRL+r)します。
from dateutil.relativedelta import * from dateutil.easter import * from dateutil.rrule import * from dateutil.parser import * from datetime import * now = parse("Sat Oct 11 17:13:46 UTC 2003") today = now.date() year = rrule(YEARLY,dtstart=now,bymonth=8,bymonthday=13,byweekday=FR)[0].year rdelta = relativedelta(easter(year), today) print("Today is: %s" % today)
Python
以下のように表示がされれば、無事、外部モジュールを読み込んで使用することができます。

以上の方法で、Python Embeddableを活用すれば、プロジェクトの配布が格段に簡単になります。必要なライブラリ等を一つのフォルダにまとめ、プロジェクトと合わせて配布するだけです。配布先では細かなコマンドライン作業やインストール作業が不要となります。
プロジェクトファイルはこちらからご確認いただけます。