Jupyter notebook Snakemake-Jupyter实验室笔记本找不到内核

Jupyter notebook Snakemake-Jupyter实验室笔记本找不到内核,jupyter-notebook,jupyter-lab,snakemake,jupyter-kernel,Jupyter Notebook,Jupyter Lab,Snakemake,Jupyter Kernel,使用R或python在jupyter lab笔记本中编写程序时,我会将特定的conda环境作为内核安装,以从基本conda环境中的单个jupyter lab安装访问特定于环境的软件包 [NbConvertApp] ERROR | Failed to run command: ... FileNotFoundError: [Errno 2] No such file or directory: '/home/miniconda3/envs/matplotlib_env/bin/python' 完

使用R或python在jupyter lab笔记本中编写程序时,我会将特定的conda环境作为内核安装,以从基本conda环境中的单个jupyter lab安装访问特定于环境的软件包

[NbConvertApp] ERROR | Failed to run command:
...
FileNotFoundError: [Errno 2] No such file or directory: '/home/miniconda3/envs/matplotlib_env/bin/python'
完成笔记本的开发后,我想将其插入snakemake文件中,以确保以后的再现性,当然,我使用相应的conda environment.yaml文件来实现这一点,以便提供所有需要的包/库

现在问题来了:引用笔记本的规则在另一台机器/环境上不可复制,因为它试图访问/运行特定于我的开发环境的内核

[NbConvertApp] ERROR | Failed to run command:
...
FileNotFoundError: [Errno 2] No such file or directory: '/home/miniconda3/envs/matplotlib_env/bin/python'
有人有解决这个问题的方法吗

编辑: 导致我的问题的更详细步骤

  • 为特定工具或任务(此处:matplotlib)设置conda环境(matplotlib_env)
  • conda create-n matplotlib_env python=3.8 ipykernel matplotlib nbconvert
    
  • 我创建了一个ipython内核,这样我的jupyter实验室实例就可以从基本环境中访问conda环境和相应的包(matplotlib)
  • python-m ipykernel安装--user--name matplotlib_env--display name“python_maplotlib”
    
  • 我创建了一个简短的笔记本(),它使用步骤2中配置的内核(Pyhton_matplotlib)
  • 导入matplotlib.pyplot作为plt
    plt.图([1,2,3],[1,4,9])
    plt.savefig('exp.png')
    
  • 完成任务后,出于管理和再现性原因,我想将其插入snakemake工作流。为此,我使用相应的notebook和conda environment.yaml文件(通过:
    conda env export>matplotlib_env.yaml
    自动生成)定义了一个规则
  • 规则生成图:
    输出:
    “exp.png”
    康达:
    “matplotlib_环境yaml”
    笔记本:
    “make_plot.ipynb”
    
  • 只要原始conda环境(带有配置的内核)仍然存在,执行规则就可以正常工作。一旦我删除了原始的conda环境(也可以选择从kernelspec列表中删除内核),我就会收到一条错误消息,因为无法再找到内核,并且snakemake生成的conda环境没有内核,笔记本正在寻找
  • snakemake-p--岩芯1--使用conda make_绘图
    
    删除原始环境后出现错误消息

    [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
    
    我找到了一个解决办法: 在保存笔记本之前,最后一次将内核从基本环境切换到默认的python或R内核。它们在安装后始终具有相同的默认名称(例如“Python3”)。因此,当通过snakemake执行时,笔记本会查找默认的Python/R内核,并找到通过snakemake--use conda选项提供的新安装

    这不是最优雅的版本,但如果您需要/想要将笔记本插入您的工作流程,它就足够了

    最严格的方法是,一旦完成,将笔记本变成一个具有明确定义的输入和输出的脚本。然后,通过相应的规则将此脚本插入Snake文件,而不是笔记本。

    我找到了一个解决方法: 在保存笔记本之前,最后一次将内核从基本环境切换到默认的python或R内核。它们在安装后始终具有相同的默认名称(例如“Python3”)。因此,当通过snakemake执行时,笔记本会查找默认的Python/R内核,并找到通过snakemake--use conda选项提供的新安装

    这不是最优雅的版本,但如果您需要/想要将笔记本插入您的工作流程,它就足够了


    最严格的方法是,一旦完成,将笔记本变成一个具有明确定义的输入和输出的脚本。然后,通过相应的规则将此脚本插入Snake文件,而不是笔记本。

    是否使用
    --使用conda
    ?你能把笔记本规则和康达·亚马尔贴出来吗?我没有为笔记本使用特定的conda环境,但它应该可以工作。嗨,感谢您的回复和兴趣!是的,我在用——用康达。我已经编辑了原始帖子,并添加了一个我所面临问题的最小示例。您是否使用
    ——use conda
    ?你能把笔记本规则和康达·亚马尔贴出来吗?我没有为笔记本使用特定的conda环境,但它应该可以工作。嗨,感谢您的回复和兴趣!是的,我在用——用康达。我已经编辑了原始帖子,并添加了一个关于我所面临问题的最小示例。