LoginSignup
1
2

More than 3 years have passed since last update.

TouchDesignerで外部pythonのライブラリを参照する時には3.5系を指定する

Last updated at Posted at 2018-11-28

(本記事の情報は古いです。)
2020年4月現在、Touch Designer 2020-official-updateでは、Python 3.7.2がTouchDesigner内部で使用されているバージョンです。

TL;DR

TouchDesignerのPython 64-bit Module Pathに指定するPythonの site-packages フォルダは、TouchDesigner内臓pythonのversionと同じ3.5系だと動く。

環境

  • TouchDesigner 0.99 2018.26750
  • Windows, macOS
  • pythonはpyenvで複数入れてあった。

背景と解決策

http://satoruhiga.com/post/extending-touchdesigner/
この記事の「外部のPythonモジュールを使う」のセクションで紹介されている外部pythonをtouchdesigner内部から使用する際に、パス等はあっているはずなのに、import (モジュール名)で読み込めない。

なお、上記の記事にもきちんと3.5.x系をインストールしましょうと書いてあります。

TouchDesigner内部で使用されているpythonは、3.5.1のようです。これはTextportを見るとわかります。

Python 3.5.1+ (default, Apr 22 2016, 18:19:55) 

よって外部pythonも3.5系の環境を指定することで外部モジュールを読み込めるようです。

site-packagesパスの調べ方

ちなみに、pythonで

import numpy
print(numpy)
-----
<module 'numpy' from '/Users/username/.pyenv/versions/anaconda3-2.5.0/lib/python3.5/site-packages/numpy/__init__.py'>

のように、site-packagesのフォルダ名を調べることができるので便利。

path設定後の設定反映のタイミング

TouchDesignerのPython 64-bit Module Pathに指定する場合

環境を変えた後にはTouchDesigner再起動しないとpythonパスの設定が更新されない挙動でした。

python上でモジュール探索パスの設定をする場合

import sys, os

#ここのpathは、環境によります。
path = '/Users/username/.pyenv/versions/anaconda3-2.5.0/lib/python3.5/site-packages'

if not path in sys.path:
    sys.path.append(path)
    print('Append new module search path:', path)
モジュール探索パスが複数設定されてしまう場合に注意

上記の、「python上でモジュール探索パスの設定をする」はsys.pathに、探索させるパスを追加しています。よって、試行錯誤を行なった場合、追加したパスが残っている場合があります。仮に、3.6系へのパスが残っていると、そちらのモジュールを読みに行って、結果モジュールが正しく読み込まれない事が起きます。

こちらも、TouchDesignerを再起動すると、初期化されるので治ります。

1
2
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
2