#python #jupyter-notebook #anaconda #jupyter #conda
#python #jupyter-ноутбук #anaconda #jupyter #conda
Вопрос:
В чем разница между открытием jupyter lab (или notebook) из конкретной среды и conda
открытием из-за пределов любой conda
среды?
Когда я открываю jupyter из определенной conda
среды, все работает нормально, однако
, когда я открываю jupyter из-за пределов любой conda
среды и пытаюсь выбрать ядро my_env
, jupyter завершается с ошибкой ниже:
Что может быть причиной этого явления?
.
.
File "C:Usersshinjianaconda3envsmy_envlibsite-packageszmqbackendcython__init__.py", line 6, in <module>
from . import (constants, error, message, context,
ImportError: DLL load failed: The specified module could not be found
- запуск jupyter изнутри
-В командной строке,
C:Usersshinjidir> activate my_env
(my_env) C:Usersshinjidir> jupyter lab
-После открытия jupyter lab
выберите kernel: my_env
- запуск jupyter ИЗВНЕ
-В командной строке,
C:Usersshinjidir> jupyter lab
-После открытия jupyter lab
выберите kernel: my_env
Ответ №1:
разница в том, что
activate my_env
помимо прочего, изменит PATH
переменную среды, которую вы можете проверить, выполнив (когда в вашей базовой среде)
echo %PATH%
conda activate my_env
echo %PATH%
PATH
Переменная здесь имеет решающее значение, поскольку это местоположение по умолчанию, в котором приложения Windows ищут загружаемые библиотеки DLL. Отсюда и сообщение об ошибке при попытке выбрать ядро, принадлежащее my_env
извне среды, в которую вы его установили:
ImportError: DLL load failed: The specified module could not be found
Комментарии:
1. Спасибо за разъяснение. Я все еще в замешательстве отчасти потому, что для некоторых других env я могу использовать их ядра на jupyter, открытых ИЗВНЕ, без каких-либо ошибок. Именно это
my_env
и выдает ошибку. Можно ли объяснить это явление чем-то другим, кромеPath
разницы?2. Возможно, проверьте версию, запустив для и какой-либо другой среды, для которой она работает.
zeromq
conda list
my_env
Сообщение об ошибке указывает, чтоzmq
не удается найти необходимые библиотеки DLL из текущегоPATH
. Может случиться так, что для двух env, у которых установлена одна и та жеzmq
версия, вы можете запустить ядро env некоторое время в env B, так какzmq
используемый from A может найти нужные ему библиотеки DLL в ПУТИ к env B, который активирован3. Интересно, что другие среды, которые работают нормально
zeromq
, в первую очередь не установлены, а толькоmy_env
установлены. Возможно, я использовал другую команду или канал при установкеjupyterlab
. Вероятно, мне следует придерживаться открытия jupyter из среды env и запускать соответствующее ядро для каждой среды. Открываете ли вы jupyter перед активацией любой среды, чтобы можно было переключаться между разными ядрами, ИЛИ открываете jupyter после активации определенной среды и используете только ядро активированной среды? Каково соглашение?4. Похоже, это может быть проблемой. Может быть другая версия jupyterlab с разными зависимостями. Я считаю, что обычно лучше активировать среду, а затем запускать jupyter, потому что другие пакеты в противном случае также не могут найти необходимые библиотеки DLL (для меня это
numpy
ormatplotlib
. Если вам нужен jupyter из разных окружений, просто активируйте их и запустите другой экземпляр5. Спасибо, это многое прояснило для меня! Действительно оценил это.