Как проверить доступность Resolve Scripting API
Диагностика импорта DaVinciResolveScript, прямого подключения к Resolve и запасной вариант через Fusion
Рабочий диагностический скрипт помогает быстро понять, где проблема: Python не видит модуль, Resolve не запущен, scriptapp не возвращает объект или проект не открыт.
API
Resolve Scripting API
Язык
Python
Resolve
19–20+
Требуется
Запущенный Resolve
Синтаксис
fusion = dvr.scriptapp("Fusion")
resolve = fusion.GetResolve()Параметры
- • "Fusion" — дополнительный объект приложения, который может вернуть Resolve через GetResolve().
Возвращает
Объект Resolve, если прямое или Fusion-подключение успешно.
import os
import sys
from pathlib import Path
def import_resolve_module():
try:
import DaVinciResolveScript as dvr
return dvr
except ImportError:
search_paths = [
os.environ.get("RESOLVE_SCRIPT_API", ""),
os.environ.get("RESOLVE_MODULES", ""),
r"C:\\ProgramData\\Blackmagic Design\\DaVinci Resolve\\Support\\Developer\\Scripting\\Modules",
"/opt/resolve/Developer/Scripting/Modules",
"/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules",
str(Path.home() / "Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules"),
]
for path in search_paths:
if path and os.path.isdir(path) and path not in sys.path:
sys.path.append(path)
import DaVinciResolveScript as dvr
return dvr
dvr = import_resolve_module()
print("Python:", sys.executable)
print("Module:", getattr(dvr, "__file__", "unknown"))
resolve = dvr.scriptapp("Resolve")
if not resolve:
fusion = dvr.scriptapp("Fusion")
if fusion:
resolve = fusion.GetResolve()
if not resolve:
raise RuntimeError("Resolve API object is unavailable")
print("Product:", resolve.GetProductName())
print("Version:", resolve.GetVersionString())Документация
Что проверяет диагностика
Скрипт выводит путь к Python, путь к модулю DaVinciResolveScript и пробует получить объект Resolve. Это позволяет отделить проблему окружения от ошибки прикладного кода. Если модуль импортируется, но resolve не появляется, значит Python уже настроен, а проблема находится в соединении с запущенным приложением.
Зачем нужен Fusion запасной вариант
В некоторых конфигурациях объект Resolve можно получить через Fusion object: scriptapp("Fusion") и fusion.GetResolve(). Это обычный резервный способ получить объект Resolve, который встречается в практических интеграциях с Resolve Scripting API.
Как читать результат
Если скрипт напечатал название продукта и версию, API доступен. Если ошибка возникает на импорте, нужно проверить папки Developer/Scripting/Modules. Если импорт прошёл, но объект Resolve не получен, проверьте, открыт ли DaVinci Resolve и разрешено ли выполнение скриптов.
Когда запускать
Диагностику удобно держать отдельным файлом и запускать перед настройкой новой машины, переносом проекта, обновлением Resolve или переходом на другой Python. Она не меняет проект, не импортирует файлы и не запускает рендер.
Разбор примера
Печатаем окружение
sys.executable и путь к модулю помогают понять, каким Python запускается скрипт и откуда импортирован Resolve API.
Пробуем прямое подключение
Первый рабочий вариант — dvr.scriptapp("Resolve"). Именно его обычно используют в production-скриптах.
Проверяем Fusion-путь
Если прямой объект не вернулся, скрипт пробует получить Resolve через Fusion. Это полезно на некоторых установках Resolve.
Фиксируем результат
GetProductName() и GetVersionString() подтверждают, что получен настоящий объект приложения, а не пустой результат.
Особенности Resolve API
- Запускайте диагностику тем же Python, которым будут запускаться рабочие скрипты.
- Запасной вариант через Fusion нужен только если прямой scriptapp("Resolve") не дал объект.
- GetProductName() и GetVersionString() безопасны: они только читают информацию приложения.
- Если Resolve закрыт, рабочий объект обычно не возвращается.
Частые ошибки
Модуль найден, но объект Resolve недоступен
Причина: Python настроен, но соединение с приложением не установлено.
Решение: Запустите Resolve до запуска скрипта и проверьте права/окружение.
Fusion тоже не возвращает Resolve
Причина: Resolve не запущен или API недоступен в текущей конфигурации.
Решение: Перезапустите Resolve и выполните диагностический файл из того же окружения, где будет основной скрипт.
Работает один Python, но не другой
Причина: Разные интерпретаторы имеют разные sys.path и переменные окружения.
Решение: Зафиксируйте один Python для всех скриптов и настройте пути именно в нём.
Следующий шаг
Если диагностика прошла, можно переходить к созданию проекта или импорту медиа.
Связанные статьи API
Старт
Как подключиться к DaVinci Resolve через Python API
Разбираем рабочий стартовый шаблон для Python-скрипта: как найти модуль DaVinciResolveScript, получить объект Resolve, проверить версию программы, Project Manager и текущий проект.
Проекты
Как получить текущий проект DaVinci Resolve через Python
Показываем рабочий способ получить открытый проект Resolve и активный Timeline. Этот код нужен перед импортом медиа, чтением настроек таймлайна, экспортом аудио и запуском рендера.
Проекты
Как создать проект DaVinci Resolve через Python API
Рабочий пример показывает, как через Project Manager создать проект, не плодить дубликаты и загрузить существующий проект, если CreateProject не создал новый.

