Запуск jupyter из среды conda или за пределами среды conda

#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 or matplotlib . Если вам нужен jupyter из разных окружений, просто активируйте их и запустите другой экземпляр

5. Спасибо, это многое прояснило для меня! Действительно оценил это.