Вопрос или проблема
Я ценю тот факт, что Jupyter работает в изолированном режиме. Я уже прочитал несколько сообщений об этом.
Что я не понимаю, так это почему переменная JUPYTER_PATH игнорируется, как и добавление вручную (в качестве доказательства концепции) пути текущих пакетов сайта из моего установленного Python. Я не смог найти документацию, специфичную для Lab, поэтому предположил, что это должно работать сразу после установки.
Есть ли идеи, как избежать установки всех необходимых пакетов через !{sys.executable} -m pip install ....
из Jupyter?
Конечно, модификация sys.path из среды — это один из вариантов, но это нужно делать для каждой записной книжки, что не идеально.
Я хотел бы устанавливать вещи из командной строки с помощью pip и иметь возможность сразу их использовать.
Спасибо
Вышла новая версия Python, и в очередной раз я потерял все свои библиотеки к тому времени, как Brew установил новое обновление.
Поэтому я потратил некоторое время, чтобы рассмотреть лучшие варианты, и я считаю, что лучший вариант — это использовать пакет управления окружением Python.
Я решил выбрать PyEnv.
Простой %pip -V показывает, что команда теперь выполняется из директории shim, что дает мне уверенность в том, что все, что я сейчас собираюсь установить, останется в папке 3.8.2 и будет перемещаемым на более позднем этапе.
Полагаю, что перемещение пакетов будет не таким простым, как 1-2-3, но по крайней мере мне, возможно, не придется скачивать все их, а просто копировать/перемещать. Любые более экспертные советы будут приветствоваться.
Ответ или решение
Локация пакетных файлов: проблемы совместимости Python и Jupyter Lab
Вопрос, который вы подняли, касается совместимости и изоляции окружений Python и Jupyter Lab, которые могут привести к потере доступности установленных библиотек. Давайте подробнее рассмотрим причины этих проблем и возможные способы их решения.
Изоляция окружений
Jupyter Lab функционирует в изолированном режиме, что является одной из его сильных сторон, но это также может стать источником трудностей, если путь к пакетам не совпадает с путями окружения Python, которое вы используете. В вашем случае проблема заключается в том, что переменная окружения JUPYTER_PATH
игнорируется, и внешний путь к библиотекам из каталога, установленного с помощью Homebrew, не учитывается.
Проблема может быть связана с тем, что Jupyter Lab может быть установлен в другом окружении, отличном от того, в котором вы работаете, что ведет к тому, что интерпретатор Python и Jupyter Lab не могут "видеть" одни и те же пакеты.
Управление пакетами с помощью окружений
Поскольку вы используете pyenv
, это отличное решение для управления различными версиями Python и окружениями. Вы можете создать разные виртуальные окружения для каждого проекта, что позволяет избежать конфликта между библиотеками.
С помощью pyenv
и virtualenv
вы сможете изолировать зависимости вашего проекта, что обеспечит доступность установленных пакетов без необходимости переустановки их каждый раз после обновления или смены версии Python. Убедитесь, что Jupyter Lab установлен в том же окружении, что и библиотеки, которые вы хотите использовать.
Доступ к установленным пакетам
Чтобы получить доступ к установленным пакетам без необходимости установки их через Jupyter, вам необходимо:
-
Убедиться в совместимости окружений: Убедитесь, что Jupyter Lab установлен в конкретном окружении
pyenv
, где вы установили все необходимые пакеты.pyenv activate <ваше_окружение> pip install jupyterlab
-
Использовать команду
%pip
внутри Jupyter: Если что-то все же отсутствует, команду%pip
можно использовать в Jupyter для установки пакетов, которые будут добавлены к текущему окружению. -
Конфигурация
sys.path
: Если вы все же хотите, чтобы Jupyter Lab получал доступ к определенным библиотекам из других окружений в более долгосрочной перспективе, добавьте путь к библиотекам вsys.path
, но это действительно требуется делать для каждого ноутбука. Чтобы избежать этого, лучшим способом будет создание и активация отдельных окружений для каждого проекта.
Заключение
К сожалению, простого решения проблемы «один раз установи и забудь» нет, но соблюдение рекомендаций по управлению окружениями и зависимостями позволит вам избежать лишней работы и постоянной установки. Используйте pyenv
и создавайте виртуальные окружения для проектов, чтобы обеспечить согласованность и доступность библиотек.
Если у вас возникли дополнительные вопросы, всегда можете обратиться к сообществу Jupyter или документации pyenv
. Это не только сэкономит ваше время, но и сделает ваш рабочий процесс более устойчивым к изменениям.