Как я могу запустить атом и водород в среде conda, используя скрипт bash? - PullRequest
1 голос
/ 05 июля 2019

Раньше у меня был простой bash-скрипт, который я использовал для активации conda env, а затем запускал atom. Затем я мог запустить код Python с использованием водорода, который мог автоматически видеть пакеты внутри myenv.

Предыдущий скрипт bash был таким:

#!/bin/bash

source activate myenv && 
atom

Поскольку conda> 4.4, что «source activ» больше не существует, мне пришлось изменить скрипт на:

#!/bin/bash

source /home/ubuntu/miniconda3/etc/profile.d/conda.sh &&
conda activate myenv &&
atom

Однако водород больше не обнаруживает myenv и запускает код из базовой среды env, что приводит к ошибке из-за отсутствия пакетов в базовой среде.

Когда я заменяю Atom на Spyder, приведенный выше скрипт работает нормально, и ядро ​​Spyder видит myenv.

Есть идеи, как мне это исправить?

Обновление 1:

Я сделал еще несколько отладок. Похоже, что мое ipykernel не назначено ядру, установленному в активированной среде, а назначено ipykernel по умолчанию.

Когда я пытаюсь jupyter kernelspec list в моей активации env, я получаю:

python3    /home/ubuntu/.local/share/jupyter/kernels/python3

Но в другой системе я получаю

/home/ubuntu/miniconda3/envs/myenv/share/jupyter/kernels/python3

которое кажется правильным ядром.

Есть идеи, как это исправить?

Обновление 2:

Похоже, что это решает проблему в обновлении 1. Затем я смог использовать принятый ответ для загрузки атома в желаемом env и запуска водорода из ipykernel в этом env.

1 Ответ

1 голос
/ 09 июля 2019

source activate по-прежнему работает, как и раньше, хотя он больше не является предпочтительным способом активации среды.

Если вы запускаете только одну команду, попробуйте

conda run -n <envname> <command>

возможно с поиском профиля первым.

Я не пробовал, но потенциальная проблема заключается в том, что вы используете && после выбора профиля.Я предполагаю, что символы продолжения строки (\) потерялись там, когда вы написали вопрос.Просто напишите команды в отдельных строках, чтобы профиль загружался до того, как bash обработает следующую команду.

...