Решение проблем с зависимостями в Yandex DataSphere
По умолчанию DataSphere уже содержит популярные пакеты и библиотеки машинного обучения. Версии библиотек зависят от системного образа, указанного в настройках проекта. Полный список установленных пакетов см. в разделе Список предустановленного ПО.
Совет
Если в вашем проекте используется множество библиотек, и у вас возникают конфликты с предустановленными библиотеками, см. раздел Сборка собственного Docker-образа. В DataSphere ограничено использование виртуального окружения и консоли.
Что такое проблемы с зависимостями
Конфликты версий библиотек возникают, когда два пакета требуют разные версии одной и той же библиотеки. Несоответствие версий библиотек затрудняют установку пакетов и могут вызвать ошибки при выполнении кода.
Если необходимые вам пакеты отсутствуют в стандартном образе DataSphere, установите их вручную.
Некоторые пакеты зависят от системных библиотек, установка которых невозможна в DataSphere из-за ограничения использования sudo
и apt
. В таких случаях придется искать обходные пути.
Если при установке или использовании пакетов возникают ошибки, это может быть связано с конфликтующими версиями зависимых библиотек. Такие ошибки включают сообщения об отсутствии модуля ModuleNotFoundError
или несовместимости версий VersionConflict
.
Когда возникает ошибка при установке пакета, pip
обычно выводит подробное сообщение с указанием причины. Например, при конфликте версий pip
укажет, какой пакет и какая версия вызвали проблему. Анализируйте эти сообщения, чтобы понять корень проблемы.
Установить, удалить или обновить пакеты
Чтобы избежать конфликтов, можно установить конкретную версию пакета. Например, для установки версии 0.11.1 пакета seaborn
используйте команду:
%pip install seaborn==0.11.1
Иногда обновление пакетов до последних версий помогает решить проблемы с зависимостями. Для обновления пакета используйте команду:
%pip install --upgrade <имя_пакета>
Если конфликтующий пакет не нужен, его можно удалить:
%pip uninstall <имя_пакета>
Указывайте минимально необходимые версии пакетов, чтобы избежать конфликтов:
%pip install <имя_пакета>>=<минимальная_версия>
Примечание
После установки, обновления или удаления пакета перезапустите ядро JupyterLab. Для этого на верхней панели в окне проекта нажмите Kernel → Restart Kernel.
Использовать файлы зависимостей
С помощью файла зависимостей requirements.txt
вы можете задать список всех необходимых пакетов и их версий для проекта. Это позволяет упростить установку зависимостей на других системах и избежать проблем при переносе окружения между разными системами.
Чтобы установить пакеты и библиотеки из файла requirements.txt
, расположенного в корне проекта, выполните команду:
%pip install -r requirements.txt
Чтобы сохранить список установленных библиотек в файл requirements.txt
, выполните:
%pip freeze > requirements.txt
Примечание
Если вы хотите развернуть окружение из файла зависимостей, созданного в DataSphere, на другой платформе, удалите системные пакеты, устанавливаемые через @
.
Использовать внешние репозитории
Если нужный вам пакет недоступен в PyPI, его можно установить напрямую из репозитория, например, из GitHub:
%pip install git+https://github.com/username/repository
Вы можете указать конкретную ветку или коммит для установки:
%pip install git+https://github.com/username/repository@branch_name
Сборка собственного Docker-образа
Собственный Docker-образа позволит настроить окружение с необходимыми зависимостями и инструментами, ускорить настройку новых проектов и обеспечить стабильность окружения. Создавая собственный Docker-образ, вы можете:
- использовать собственный заготовленный образ;
- использовать «чистые» образы Python без предустановленных зависимостей;
- устанавливать инструменты через
apt
; - использовать версии библиотек и драйверов, отличные от предустановленных в DataSphere, например, установить другую версию CUDA;
- быстро установить большие библиотеки или скачать файлы.
О том, как собрать собственный образ, см. Работа с Docker-образами.
Часто возникающие ошибки
Ошибка ModuleNotFoundError
Ошибка ModuleNotFoundError
возникает, когда пакет не установлен. Убедитесь, что пакет установлен, используя %pip install <имя_пакета>
. Если вы только что установили пакет, перезапустите ядро JupyterLab.
Ошибка VersionConflict
Ошибка VersionConflict
возникает, когда в системе установлены несовместимые версии пакетов. Проверьте пакеты и установите совместимые версии:
%pip install <имя_пакета>==<необходимая_версия>
После переустановки пакета перезапустите ядро JupyterLab.
Ошибка Could not find a version that satisfies the requirement
Ошибка Could not find a version that satisfies the requirement
может возникнуть, если указана несуществующая версия пакета или если пакет недоступен в репозитории. Проверьте правильность имени пакета и версии и попробуйте установить другую версию.
Что еще можно сделать
Если вы столкнулись с ошибкой, которую не можете решить, обратитесь в поддержку