Перейти к содержанию

Настройка PyCharm для Python Houdini на macOS

Настроить PyCharm так, чтобы он «понимал» hou из Houdini на macOS, бывает непросто. В этом гайде мы создадим локальное виртуальное окружение проекта на основе встроенного Python Houdini, установим тайп‑стабы, добавим рантайм‑пути Houdini в интерпретатор, привяжем внешний редактор Houdini к отдельному лаунчеру PyCharm и проверим результат — чтобы получить точный автокомплит и навигацию, не трогая встроенный интерпретатор Houdini.

Note

Платформа: macOS. Инструменты: SideFX Houdini, JetBrains PyCharm, JetBrains Toolbox.

Important

Цель: точный Code Insight для hou из Houdini в PyCharm с использованием локальной .venv/, созданной на базе Python Houdini. Встроенный интерпретатор Houdini остаётся нетронутым; все пакеты устанавливаются в .venv/.

Настройка Houdini

Соберите пути поиска Python Houdini для анализа IDE. В Python‑ноде выполните:

import sys
import pathlib
import json

sys_paths = [pathlib.Path(p).resolve().as_posix() for p in sys.path]
print(json.dumps(sys_paths, indent=4))

Скопируйте полученный JSON‑массив — он пригодится позже.

Tip

Эти пути нужны один раз. Они позволяют PyCharm видеть те же модули, которые Houdini добавляет в рантайме.

Настройка PyCharm

Создайте виртуальное окружение на базе Python Houdini (стандартный macOS‑путь «Current»):

/Applications/Houdini/Current/Frameworks/Python.framework/Versions/Current/bin/python3 -m venv .venv

Активируйте его при работе в терминале:

source .venv/bin/activate

Выберите интерпретатор проекта в PyCharm: - Preferences (Cmd + ,) → Project: → Python Interpreter → шестерёнка → Add… → Existing environment → выберите .venv/bin/python → OK.

Установите тайп‑стабы в .venv:

pip install -U pip types-houdini types-PySide2

Note

types-houdini добавляет .pyi‑стабы для hou. types-PySide2 — Qt‑стабы, часто используемые с Houdini.

Добавьте рантайм‑пути Houdini в Interpreter Paths (чтобы IDE видела те же модули): - Preferences → Project: Python Interpreter → шестерёнка → Show All… → выберите ваш интерпретатор .venv → иконка папки (Interpreter Paths). - Добавьте только те записи из вашего JSON, которых не хватает при запуске .venv/bin/python вне Houdini → Apply.

Включите скрипт JetBrains Toolbox для PyCharm и создайте понятный враппер: - Toolbox App → Settings → включите “Generate shell scripts.” - В Toolbox откройте запись PyCharm → включите её shell‑скрипт (на macOS обычно): - ~/Library/Application Support/JetBrains/Toolbox/scripts/pycharm - Создайте отдельный лаунчер для Houdini:

mkdir -p "$HOME/bin"
ln -s "$HOME/Library/Application Support/JetBrains/Toolbox/scripts/pycharm" \
      "$HOME/bin/pycharm-houdini"

Запускайте окно проекта через этот лаунчер и держите его открытым:

"$HOME/bin/pycharm-houdini" <project_root>

Important

Держа это окно проекта открытым, вы гарантируете, что файлы, открываемые из Houdini, попадут именно в это окно PyCharm, настроенное на использование .venv/.

Возвращаемся в Houdini

Привяжите Houdini к PyCharm теперь, когда лаунчер pycharm-houdini существует: - Edit → Preferences → Set External Text Editor → укажите: - ~/bin/pycharm-houdini

Используйте “Edit in External Editor” в Python‑ноде. Файл должен открыться в уже запущенном окне проекта PyCharm (том самом, что вы стартовали через pycharm-houdini).

Выключите предупреждения об неразрешённом hou в файлах проекта (только для type‑check):

from typing import TYPE_CHECKING
if TYPE_CHECKING:
    import hou  # IDE/type-check only; ignored at runtime inside Houdini

Проверка

В редакторе кода:

node = hou.pwd()
geo = node.geometry()

Если geo отображается как Any, явно укажите контекст (пример для SOP):

node: hou.SopNode = hou.pwd()
geo = node.geometry()

Теперь автодополнение и навигация должны работать точно.

Устранение неполадок

  • import hou падает при запуске вне Houdini: так и задумано. IDE использует стабы для анализа; реальный hou существует только внутри Houdini.
  • Модули не резолвятся в PyCharm: убедитесь, что Interpreter Paths добавлены именно в тот .venv‑интерпретатор, который выбран у проекта; проверьте, что проект запущен через pycharm-houdini перед вызовом внешнего редактора из Houdini.
  • Houdini открывает другое окно: сперва запустите целевой проект через pycharm-houdini и держите его открытым; затем используйте “Edit in External Editor.”