При написании программы в лабораторной записной книжке jupyter с использованием R или python я устанавливаю определенные среды conda в качестве ядер для доступа к этим пакетам, зависящим от среды, из одной лабораторной установки jupyter в базовой среде conda.
После завершения разработки ноутбука я хочу вставить его в свой файл snakemake, чтобы обеспечить воспроизводимость в дальнейшем, и, конечно же, я делаю это с соответствующим файлом среды conda .yaml, чтобы были предоставлены все необходимые пакеты / библиотеки.
Теперь возникает проблема: правило, которое ссылается на записную книжку, не воспроизводится на другой машине / среде, поскольку оно пытается получить доступ / запустить ядро, специфичное для моей среды разработки.
Есть ли у кого-нибудь обходной путь или решение этой конкретной проблемы?
РЕДАКТИРОВАТЬ: Более подробные инструкции по устранению моей проблемы
- Настройте среду conda (matplotlib_env) для определенного инструмента или задачи (здесь: matplotlib)
conda create -n matplotlib_env python=3.8 ipykernel matplotlib nbconvert
- Я создал ядро ipython, чтобы мой экземпляр jupyter-lab из базовой среды мог получить доступ к среде conda и соответствующим пакетам (matplotlib)
python -m ipykernel install —user —name matplotlib_env —display-name «Python_maplotlib»
- Я создал небольшую записную книжку (1), в которой используется ядро, настроенное на шаге 2 (Pyhton_matplotlib 2)
import matplotlib.pyplot as plt plt.plot([1,2,3],[1,4,9]) plt.savefig(‘exp.png’)
- Выполнив задачу, я хочу включить ее в свой рабочий процесс snakemake для управления и воспроизводимости. Для этого я определяю правило с соответствующим файлом .yaml среды ноутбука и conda (автоматически сгенерированным через: conda env export > matplotlib_env.yaml).
rule make_plot: output: «exp.png» conda: «matplotlib_env.yaml» notebook: «make_plot.ipynb»
- Выполнение правила работает нормально, пока существует исходная среда conda (с настроенным ядром). Как только я удаляю исходную среду conda (необязательно также ядро из списка kernelspec), я получаю сообщение об ошибке, так как ядро больше не может быть найдено, а среда conda, созданная snakemake, не имеет ядра, ноутбук ищет .
snakemake -p —cores 1 —use-conda make_plot
Сообщение об ошибке после удаления исходной среды
[NbConvertApp] ERROR | Failed to run command: … FileNotFoundError: [Errno 2] No such file or directory: ‘/home/miniconda3/envs/matplotlib_env/bin/python’
Сообщение об ошибке после удаления ядра из списка ядер
… raise NoSuchKernel(kernel_name) jupyter_client.kernelspec.NoSuchKernel: No such kernel named matplotlib_env
Вы работаете с —use-conda? Можете ли вы опубликовать правило записной книжки и conda yaml? Я не использовал конкретную среду conda для правил записной книжки, но она должна работать. — person sreichl schedule 23.11.2020
Привет, спасибо за ответ и интерес! Да, я использую —use-conda. Я отредактировал исходный пост и добавил минимальный пример проблемы, с которой я столкнулся. — person sreichl schedule 07.12.2020
Источник: