Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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を再起動すると、初期化されるので治ります。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away