Python Embeddableを利用したTouchDesignerの便利な配布方法

Python Embeddableを利用したTouchDesignerの便利な配布方法

Type
touchdesignerpythonwindows
Description
Created time
May 3, 2024 3:16 AM
Last edited time
May 3, 2024 3:23 AM

PythonのEmbeddableパッケージを活用して、TouchDesignerのプロジェクトの配布をより簡易にする方法をご紹介します。この方法を採用することで、開発環境から納品用端末へ開発したtoeファイルをただコピーするだけで、納品用端末にPythonをインストールする手間が省けます。本記事では、Windows環境での手順に焦点を当てて解説します。

Python Embeddable packageのダウンロード

まずはじめに、PythonのEmbeddable packageをダウンロードします。ダウンロードはPythonの公式ウェブサイトから行うことができます。

image

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

image

pythonXX._ pthファイルの編集

ここで注意点が一つ。ダウンロードしたPythonのバージョンに応じたpythonXX._pthファイルを編集する必要があります。その際には、’import site’のコメントアウトを外します。

python310.zip.
# Uncomment to run site.main() automatically
import site
pythonXX._pth

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

Textportでパスが追加されているか確認できます。

image

最後に、実際に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)

以下のように表示がされれば、無事、外部モジュールを読み込んで使用することができます。

image

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

プロジェクトファイルはこちらからご確認いただけます。

https://github.com/daaishi/TD-embeddable-python