Юпитер и Конда: ошибка при клонировании среды - PullRequest
1 голос
/ 20 января 2020

Я создал несколько сред conda для проверки совместимости установленных пакетов. Я использую conda create -n test02 --clone test01 для создания среды test02 в качестве клона test01. Я активирую test02, устанавливаю новые пакеты и запускаю экземпляр python, из которого импортирую новые пакеты без проблем. Проблема возникает, когда я запускаю jupyter notebook или qtconsole и пытаюсь импортировать недавно установленный пакет и получаю ошибку импорта: нет модуля с именем 'xxx'. Я делаю sys.executable и вижу, что jupyter работает python из старой среды (test01), из которой я клонировал новую. Почему это происходит? Могу ли я изменить его где-нибудь в конфигурационном файле и где я могу найти этот файл?

edit: дополнительная информация

jupyter --paths для обеих сред общий доступ к записи пути для конфигурации и данных в одном каталоге среды

(test01) PS C:\Users\Aka> jupyter --paths
config:
    C:\Users\Aka\.jupyter
    c:\users\aka\miniconda3\envs\test01\etc\jupyter
    C:\ProgramData\jupyter
data:
    C:\Users\Aka\AppData\Roaming\jupyter
    c:\users\aka\miniconda3\envs\test01\share\jupyter
    C:\ProgramData\jupyter
runtime:
    C:\Users\Aka\AppData\Roaming\jupyter\runtime
(test01) PS C:\Users\Aka> conda activate test02
(test02) PS C:\Users\Aka> jupyter --paths
config:
    C:\Users\Aka\.jupyter
    c:\users\aka\miniconda3\envs\test01\etc\jupyter
    C:\ProgramData\jupyter
data:
    C:\Users\Aka\AppData\Roaming\jupyter
    c:\users\aka\miniconda3\envs\test01\share\jupyter
    C:\ProgramData\jupyter
runtime:
    C:\Users\Aka\AppData\Roaming\jupyter\runtime

edit2: я забыл упомянуть, что Я установил Jupyter с помощью pip.

, чтобы воссоздать проблему, которую я сделал:

conda create -n env1
conda activate env1
pip install jupyter
jupyter --paths

config:
C: \ Users \ Aka.jupyter
c: \ users \ aka \ miniconda3 \ envs \ env1 \ etc \ jupyter
C: \ ProgramData \ jupyter
data:
C: \ Users \ Aka \ AppData \ Roaming \ jupyter
c : \ users \ aka \ miniconda3 \ envs \ env1 \ share \ jupyter
C: \ ProgramData \ jupyter
runtime:
C: \ Users \ Aka \ AppData \ Roaming \ jupyter \ runtime

conda create --clone env1 -n env2
conda activate env2
jupyter --paths

config:
C: \ Users \ Aka.jupyter
c: \ users \ aka \ miniconda3 \ envs \ env1 \ etc \ jupyter
C: \ ProgramData \ jupyter
data:
C: \ Users \ Aka \ AppData \ Roaming \ jupyter
c: \ users \ aka \ miniconda3 \ envs \ env1 \ share \ jupyter
C: \ ProgramData \ jupyter
время выполнения:
C: \ Users \ Aka \ AppData \ Roaming \ jupyter \ runtime

Если Я должен был установить Jupyter с Conda в совершенно новую среду, а затем клонировать среду, Jupyter ведет себя как ожидалось. Примечание: я установил jupyter с pip, потому что я использую python 3.5 из-за других пакетов, которые мне нужны, и установка jupyter с conda в моих средах продолжала ломать его. Я обратился к Конда-Фордж за помощью, но они сказали: «Извините, мы не поддерживаем python 3.5».

1 Ответ

1 голос
/ 23 января 2020

Jupyter нужно устанавливать только в одном месте - либо в Conda env, либо на системном уровне.

Jupyter, установленный в Conda env

Чтобы использовать другие envs в качестве ядер, один необходимо установить nb_conda_kernels в env с Jupyter и ipykernel в любой env, который вы sh будете использовать в качестве ядра. Всегда запускайте jupyter notebook из env с Jupyter, а остальные будут доступны автоматически.

Jupyter за пределами Conda

Если Jupyter установлен на системном уровне, необходимо вручную зарегистрировать Conda envs one хочет использовать в качестве ядра:

conda activate my_env
conda install ipykernel
python -m ipykernel install --user --name my_env_name

Затем запустите Jupyter из любого места.

...