Страницы

Поиск по вопросам

воскресенье, 29 марта 2020 г.

Как грамотно починить “сломанные” / переставшие работать модули Python?

#python #anaconda #virtualenv #tutorial


Все чаще появляются вопросы о "сломанных" / несовместимых / переставших работать
модулях в Python и о сопутствующих этому ошибках:


ImportError: DLL load failed: ...
ImportError: Could not import ...
UnsatisfiableError: The following specifications were found to be in conflict: ...


и много других...

Описанные выше проблемы чаще всего возникают вследствие:


установки нового модуля
обновления Python
обновления модуля / модулей
обновления / изменения в VirtualEnv (виртуальной среде Python)


Вопрос:


  как исправить данные проблемы и как избежать их появления в будущем?

    


Ответы

Ответ 1



После долгого "хождения по граблям" (как под UNIX* так и под Windows) я остановился на следующем подходе, который меня пока ни разу не подводил. Anaconda проверяет совместимость версий модулей (включая зависимости). Это минимизирует вероятность поломать Python, просто установив или обновив некий модуль(и). Алгоритм установки Anaconda и создания VirtualEnv (независимого виртуального окружения Python): Устанавливаем Anaconda или Miniconda Installing on Windows Installing on Linux Installing on macOS Обновляем менеджер пакетов conda (NOTE: чтобы избежать проблем - всегда запускайте conda из Anaconda Prompt): conda update conda Никогда "не трогайте" Python, установленный по умолчанию в ОС или установленный другим программным обеспечением (например при установке Oracle Database, устанавливается отдельный Python, который будет использоваться Oracle). Под "не трогайте" Python я подразумеваю внесение любых изменений, затрагивающих Python или его модули: установка новых модулей обновление Python обновление модулей Для каждого более или менее независимого проекта на Python создавайте независимое виртуальное окружение (VirtualEnv). Можно дополнительно создать одно общее окружение для общих целей. В данном примере я создам общее окружение с названием ml (Machine Learning) для версии Python 3.7 и основным набором модулей для работы над задачами машинного обучения (с поддержкой Nvidia GPU): conda create --name ml python=3.7 anaconda keras-gpu Для того чтобы запустить Python / Jupyter / iPython / etc. из созданного VirtualEnv можно воспользоваться одним из следующиз варантов: Запускать соответствующую программу (Python / Jupyter / iPython), указав полный путь. Обычно это: <директория куда вы установили Anaconda>/envs/. Пример для Windows: C:\Users\Max\Anaconda3\envs\ml создать ярлык для запуска Python / Jupyter / iPython из директории, принадлежащей данному VirtualEnv для проекта в PyCharm можно в качестве Project Interpreter указать существующий Conda Environment Чтобы установить новый модуль всегда попробуйте сделать это в следующей последовательности: сначала всегда пробуем найти нужный модуль в репозитори Anaconda по умолчанию conda search если модуль найден - устанавливаем его в наш VirtualEnv (ml в нашем примере): conda install -n ml если модуль не найден, то пытаемся найти данный модуль в репозитории conda-forge (A community-led collection) conda search -c conda-forge если модуль найден - устанавливаем его в наш VirtualEnv (ml в нашем примере): conda install -c conda-forge -n ml только в том случае, если нужный модуль не найден ни в оригинальном Anaconda репозитории ни в conda-forge - используем pip install: conda activate ml pip install чтобы обновить модуль используйте менеджер пакетов conda: conda update -n ml Полезные ссылки: Conda Tutorial Conda Cheat Sheet

Комментариев нет:

Отправить комментарий