В чем разница между открытием jupyter lab (или ноутбука) ВНУТРИ определенной conda
env и открытием СНАРУЖИ любой conda
env?
Когда я открываю jupyter из ININ конкретной conda
env, все работает нормально
когда я открываю jupyter извне любой conda
envs и пытаюсь выбрать ядро для my_env
, jupyter завершается с ошибкой ниже:
Что может быть причиной этого явления?
.
.
File "C:\Users\shinji\anaconda3\envs\my_env\lib\site-packages\zmq\backend\cython\__init__.py", line 6, in <module>
from . import (constants, error, message, context,
ImportError: DLL load failed: The specified module could not be found
-В командной строкеC:\Users\shinji\dir> activate my_env
(my_env) C:\Users\shinji\dir> jupyter lab
-После открытия лаборатории jupyter,
Выберите ядро: my_env
-В командной строкеC:\Users\shinji\dir> jupyter lab
-После открытия лаборатории jupyter,
Выберите ядро: my_env
разница в том, что
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
Возможно, проверьте версию zeromq
, запустив conda list
для my_env
и некоторых других env, для которых это работает. Сообщение об ошибке указывает, что zmq
не может найти необходимые библиотеки DLL из текущего PATH
. Возможно, для двух env с одной и той же установленной версией zmq
вы можете запустить ядро env A, находясь в env B, поскольку используемая zmq
из A может найти нужные библиотеки DLL в PATH активированной env B.
Интересно, что другие нормально работающие env не имеют установленного zeromq
, а только my_env
. Возможно, я использовал другую команду или канал при установке jupyterlab
. Вероятно, мне следует придерживаться открытия jupyter из окружения и запускать соответствующее ядро для каждого окружения. Открываете ли вы jupyter перед активацией любой среды, чтобы вы могли переключаться между различными ядрами ИЛИ открывать jupyter после активации определенной среды и использовать только ядро активированной среды? Какая конвенция?
Похоже, дело может быть в этом. Это может быть другая версия jupyterlab с другими зависимостями. Я считаю, что обычно лучше всего активировать среду, а затем запустить jupyter, потому что в противном случае другие пакеты также не могут найти необходимые DLL (для меня это numpy
или matplotlib
. Если вам нужен jupyter из разных окружений, просто активируйте их и запустите другой пример
Спасибо, многое прояснилось для меня! Очень ценил это.
Спасибо за разъяснение. Я все еще в замешательстве, потому что для некоторых других окружений я могу использовать их ядра на jupyter, открытом извне, без каких-либо ошибок. Именно это
my_env
выдает ошибку. Можно ли объяснить это явление чем-то другим, кромеPath
различия?