You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Snakemake时触发NameError:'snakemake'名称未定义

解决Snakemake中Python脚本NameError: name 'snakemake' is not defined问题

出现这个错误的核心原因是你的Python脚本没有被Snakemake的script执行机制加载,导致snakemake内置对象没有被注入到脚本的运行环境中。以下是具体排查和解决方法:

1. 检查Snakefile中调用脚本的方式

确保你在规则中使用script:指令而非shell:来调用Python脚本:

正确写法(会自动注入snakemake对象)

rule process_data:
    input:
        "raw_data.txt"
    output:
        "processed_data.txt"
    script:
        "my_processing_script.py"

错误写法(不会注入snakemake对象)

如果用shell:直接执行python命令,Snakemake只会启动一个独立的Python进程,不会传递内置的snakemake对象:

rule process_data:
    input:
        "raw_data.txt"
    output:
        "processed_data.txt"
    shell:
        "python my_processing_script.py"

2. 若必须使用shell调用的替代方案

如果因特殊需求需要用shell:执行脚本,可通过命令行参数传递输入/输出路径,在脚本中用sys.argv接收:

Snakefile修改:

rule process_data:
    input:
        "raw_data.txt"
    output:
        "processed_data.txt"
    shell:
        "python my_processing_script.py {input} {output}"

Python脚本修改:

import sys

input_file = sys.argv[1]
output_file = sys.argv[2]

# 后续处理逻辑

3. 排除手动运行脚本的干扰

如果你之前手动执行过python my_processing_script.py,这种情况下确实会触发该错误,但你是通过snakemake --cores 1运行的,这条可以忽略,不过需要确认Snakemake确实在调用你的目标脚本。

4. 检查Snakemake版本兼容性

确保你的Snakemake版本不是过于老旧(比如低于5.0),旧版本可能在脚本注入机制上存在问题。可以用snakemake --version查看版本,必要时更新至稳定版。

内容的提问来源于stack exchange,提问作者user25056150

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:12:35