К содержанию
fohbookбета/ TouchDesigner

Внешние модули и окружения

Пакеты pip подключают путём в настройках или через tdPyEnvManager, который возит окружение вместе с проектом. numpy и OpenCV свои не подменяют, тяжёлое изолируют.

Ветка вашего пульта:1 фрагмент статьи для версий новее вашей1 фрагмент статьи для версий новее вашей
Быстрый выбор:

У TouchDesigner свой Python и свой набор пакетов, в том числе numpy и OpenCV. Остальное подключают снаружи, и именно здесь спотыкается большинство попыток запустить нейросеть.

Путь к пакетам

Работает во всех ветках. Ставится отдельный Python той же версии, что внутри, — для 2025.30000 это последняя подверсия 3.11 с python.org, — или окружение через Anaconda. Пакет кладут туда:

pip install --target=D:/td_packages onnxruntime-gpu

Дальше в Edit → Preferences → General включают Add External Python to Search Path, путь вписывают в Python 64-bit Module Path (несколько — через ;) и перезапускают программу. Другие пути — переменная окружения PYTHONPATH или код в onStart() у Execute DAT:

import sys
mypath = 'D:/td_packages'
if mypath not in sys.path:
    sys.path = [mypath] + sys.path

Путь в начале списка перекрывает одноимённые пакеты самого TouchDesigner — держите это в голове, если там окажется свой numpy.

tdPyEnvManager

Появилось в 2025.30000 · в вашей версии этого нет

В палитре ветки 2025.30000 есть менеджер окружений прямо в программе.

Он создаёт и подключает venv и conda, открывает командную строку активного окружения для pip и conda, выгружает окружение в requirements.txt или environment.yml и собирает новое из них. Контекст хранится рядом с проектом в TDPyEnvManagerContext.yaml, а со сборки 2025.32280 ещё и в разделе [tool.touchdesigner.TDPyEnvManagerContext] файла pyproject.toml. С автонастройкой окружение подключается при запуске, до инициализации компонентов; шаг блокирующий, и старт удлиняется. Зато окружение переносится вместе с проектом.

Тяжёлую работу в фоне выполняет Thread Manager из ресурсов программы, op.TDResources.ThreadManager: пул потоков с очередью задач, при котором модель грузится и считается, а картинка не замирает — Отложенный запуск и потоки.

Свой numpy и OpenCV

Внутренние инструменты и палитра опираются на встроенные numpy и OpenCV, и Derivative прямо пишет: другие версии — на ваш страх и риск. Падение может прийти не сразу. Библиотеку, которой нужен другой numpy, уносят в отдельный процесс.

Изоляция

Способ Плюс Минус
В том же процессе Просто, быстро Падение библиотеки роняет шоу
В потоке (Thread Manager) Не блокирует кадр Всё ещё один процесс
В Engine COMP Изоляция от падений Сложнее отладка
Отдельное приложение + Spout/NDI Полная изоляция Задержка, больше движущихся частей

Чем тяжелее и чужероднее библиотека, тем дальше её держат, и для шоу обычно выбирают две последние строки.

import sys
for p in sys.path: print(p)

import onnxruntime as ort
print(ort.__version__, ort.get_available_providers())

Импорт упал — проверьте версию Python, потом разрядность, потом путь. Частые ошибки разобраны в Ошибках Python.

Нашли в статье ошибку, устаревшее или непонятное место?

рядом по смыслу