Snakemake — ноутбук Jupyter lab не находит ядро

При написании программы в лабораторной записной книжке jupyter с использованием R или python я устанавливаю определенные среды conda в качестве ядер для доступа к этим пакетам, зависящим от среды, из одной лабораторной установки jupyter в базовой среде conda.

После завершения разработки ноутбука я хочу вставить его в свой файл snakemake, чтобы обеспечить воспроизводимость в дальнейшем, и, конечно же, я делаю это с соответствующим файлом среды conda .yaml, чтобы были предоставлены все необходимые пакеты / библиотеки.

Теперь возникает проблема: правило, которое ссылается на записную книжку, не воспроизводится на другой машине / среде, поскольку оно пытается получить доступ / запустить ядро, специфичное для моей среды разработки.

Есть ли у кого-нибудь обходной путь или решение этой конкретной проблемы?

РЕДАКТИРОВАТЬ: Более подробные инструкции по устранению моей проблемы

  1. Настройте среду conda (matplotlib_env) для определенного инструмента или задачи (здесь: matplotlib)

conda create -n matplotlib_env python=3.8 ipykernel matplotlib nbconvert

  1. Я создал ядро ​​ipython, чтобы мой экземпляр jupyter-lab из базовой среды мог получить доступ к среде conda и соответствующим пакетам (matplotlib)

python -m ipykernel install —user —name matplotlib_env —display-name «Python_maplotlib»

  1. Я создал небольшую записную книжку (1), в которой используется ядро, настроенное на шаге 2 (Pyhton_matplotlib 2)

import matplotlib.pyplot as plt plt.plot([1,2,3],[1,4,9]) plt.savefig(‘exp.png’)

  1. Выполнив задачу, я хочу включить ее в свой рабочий процесс snakemake для управления и воспроизводимости. Для этого я определяю правило с соответствующим файлом .yaml среды ноутбука и conda (автоматически сгенерированным через: conda env export > matplotlib_env.yaml).

rule make_plot: output: «exp.png» conda: «matplotlib_env.yaml» notebook: «make_plot.ipynb»

  1. Выполнение правила работает нормально, пока существует исходная среда 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

Источник: ledsshop.ru

Стиль жизни - Здоровье!