среда conda не работает после обновления conda - PullRequest
1 голос
/ 22 марта 2020

после длительного использования conda меня вчера попросили обновить, и теперь все выглядит не так. Я должен признать, что я не эксперт в том, что происходит за кулисами, поэтому терпите меня:)

После установки conda я использовал pip для установки различных пакетов. Вчера я начал работать над кодом из учебника по git, в котором предлагалось создать среду ad-ho c для работы с:

conda env create -f binder/environment.yml

На этом шаге мне предложили обновить conda, так как я использовал старую версию. Я не могу найти в своем терминале это сообщение c (т.е. я не могу найти, какую версию conda я использовал раньше), но вот что я получаю сейчас, когда проверяю версию conda:

(base) francesco ~$ conda list conda
# packages in environment at /Users/francesco/anaconda3:
#
# Name                    Version                   Build  Channel
_anaconda_depends         2019.03                  py36_0  
anaconda                  custom                   py36_1  
anaconda-client           1.7.2                    py36_0  
anaconda-navigator        1.8.7                    py36_0  
anaconda-project          0.8.4                      py_0  
conda                     4.8.3                    py36_0  
conda-build               3.10.5                   py36_0  
conda-env                 2.6.0                h36134e3_0  
conda-package-handling    1.6.0            py36h1de35cc_0  
conda-verify              3.4.2                      py_1  

Одна из вещей, которые я заметил после обновления, заключается в том, что для активации / деактивации среды мне пришлось использовать conda activate/deactivate <env> вместо source activate/deactivate <env>.

После этого я работал с кодом в новой среде без проблем.

Сегодня я попытался активировать основное окружение, с которым я работаю, но меня попросили сначала «инициализировать» мою оболочку с помощью:

conda init bash

После этого Я активировал свое «обычное» окружение:

conda activate testenv

и попытался запустить Jupyter Lab, но я получил эту ошибку:

(testenv) francesco ~$ jupyter lab
Error executing Jupyter command 'lab': [Errno 2] No such file or directory

Что происходит? Почему Jupyter Lab больше не работает в моей обычной среде?

Я проверил установку в testenv и все выглядит нормально:

(testenv) francesco ~$ conda list | grep jup
jupyter                   1.0.0                    py37_7  
jupyter_client            5.2.4                    py37_0  
jupyter_console           6.0.0                    py37_0  
jupyter_core              4.4.0                    py37_0  
(testenv) francesco ~$ pip list | grep jup
jupyter                  1.0.0   
jupyter-client           5.2.4   
jupyter-console          6.0.0   
jupyter-core             4.4.0   
(testenv) francesco ~$ 

Кто-нибудь знает, что происходит? Для меня это огромная проблема, так как лаборатория conda / jupyter - это основные инструменты, которые я использую для работы: \

Ответы [ 2 ]

1 голос
/ 22 марта 2020

@ FrancescoLS Похоже, у вас установлена ​​более старая версия Conda (?), Так как CHANGELOG означает, что source activate устарел в пользу conda activate в Conda v4.4.0 (как есть также отмечено в этом сообщении « Как подготовиться к выпуску conda 4.4 » от Anaconda).

Это действительно не «ответ» каким-либо действенным способом, но кажется, что вы не одиноки в обновлении Conda, нарушающем окружение людей.

Я думаю, что можно с уверенностью сказать, что сохранить виртуальные среды в целости и сохранности во время обновления сложно, а при значительном обновлении с помощью сопровождающих виртуальной среды (Conda) это еще сложнее , Это одна из причин, по которой я лично пытаюсь поддерживать все виртуальные среды моего проекта в собственных Python 3 venv виртуальных средах с pip или с помощью Poetry (как они есть ( или, по крайней мере, раньше) способ быстрее восстановить, чем необходимость go через более медленный решатель Conda), а затем использовать Conda только тогда, когда мне нужно ввести несколько внешних двоичных приложений.

Удалось ли вам создать новую среду Conda для вашей работы, которая эффективно восстановит ее (возможно, из вашего собственного файла environment.yml для этой среды)?

1 голос
/ 22 марта 2020

Обычная практика - устанавливать Jupyter только в одной среде Conda (обычно это base env, если пользователь Anaconda) и всегда запускать Jupyter оттуда. Чтобы использовать другие Python envs в Jupyter, вам необходимо установить ipykernel в эти envs, например,

conda install -n testenv ipykernel

И, чтобы избежать необходимости регистрировать дополнительные envs, рекомендуется установить nb_conda_kernels в env с Jupyter, например,

conda install -n base nb_conda_kernels

В качестве примечания, установка вещей с помощью Pip может сделать среду нестабильной. Я настоятельно рекомендую изучить и придерживаться документированных лучших практик .

...