Запуск jupyter из среды conda по сравнению с внешней средой conda env

В чем разница между открытием 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

  • запуск jupyter из WITHIN

-В командной строке
C:\Users\shinji\dir> activate my_env

(my_env) C:\Users\shinji\dir> jupyter lab

-После открытия лаборатории jupyter,
Выберите ядро: my_env


  • запуск jupyter извне

-В командной строке
C:\Users\shinji\dir> jupyter lab

-После открытия лаборатории jupyter,
Выберите ядро: my_env


Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
135
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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

Спасибо за разъяснение. Я все еще в замешательстве, потому что для некоторых других окружений я могу использовать их ядра на jupyter, открытом извне, без каких-либо ошибок. Именно это my_env выдает ошибку. Можно ли объяснить это явление чем-то другим, кроме Path различия?

koyamashinji 15.12.2020 10:06

Возможно, проверьте версию zeromq, запустив conda list для my_env и некоторых других env, для которых это работает. Сообщение об ошибке указывает, что zmq не может найти необходимые библиотеки DLL из текущего PATH. Возможно, для двух env с одной и той же установленной версией zmq вы можете запустить ядро ​​env A, находясь в env B, поскольку используемая zmq из A может найти нужные библиотеки DLL в PATH активированной env B.

FlyingTeller 15.12.2020 10:12

Интересно, что другие нормально работающие env не имеют установленного zeromq, а только my_env. Возможно, я использовал другую команду или канал при установке jupyterlab. Вероятно, мне следует придерживаться открытия jupyter из окружения и запускать соответствующее ядро ​​​​для каждого окружения. Открываете ли вы jupyter перед активацией любой среды, чтобы вы могли переключаться между различными ядрами ИЛИ открывать jupyter после активации определенной среды и использовать только ядро ​​​​активированной среды? Какая конвенция?

koyamashinji 15.12.2020 10:53

Похоже, дело может быть в этом. Это может быть другая версия jupyterlab с другими зависимостями. Я считаю, что обычно лучше всего активировать среду, а затем запустить jupyter, потому что в противном случае другие пакеты также не могут найти необходимые DLL (для меня это numpy или matplotlib. Если вам нужен jupyter из разных окружений, просто активируйте их и запустите другой пример

FlyingTeller 15.12.2020 11:00

Спасибо, многое прояснилось для меня! Очень ценил это.

koyamashinji 15.12.2020 11:20

Другие вопросы по теме