安装Snakemake后无法运行,遇Pulp模块属性错误求助
问题描述
激活conda安装的Snakemake环境后,执行snakemake --help出现如下报错:
Traceback (most recent call last):
File "/home/miniconda3/envs/snakemake/lib/python3.12/site-packages/snakemake/cli.py", line 2037, in main
parser, args = parse_args(argv)
^^^^^^^^^^^^^^^^
File "/home/miniconda3/envs/snakemake/lib/python3.12/site-packages/snakemake/cli.py", line 1629, in parse_args
parser = get_argument_parser()
^^^^^^^^^^^^^^^^^^^^^
File "/home/miniconda3/envs/snakemake/lib/python3.12/site-packages/snakemake/cli.py", line 770, in get_argument_parser
lp_solvers = pulp.list_solvers(onlyAvailable=True)
^^^^^^^^^^^^^^^^^
AttributeError: module 'pulp' has no attribute 'list_solvers'. Did you mean: 'listSolvers'?
问题原因
Snakemake代码中调用了pulp旧版本的list_solvers函数,但当前安装的pulp新版本已将函数名改为驼峰式的listSolvers,二者版本不兼容导致报错。
解决方案
方案1:降级pulp到兼容版本
- 激活Snakemake环境:
conda activate snakemake - 安装指定兼容版本的pulp(如2.7.0版本,仍保留
list_solvers):conda install pulp=2.7.0 -c conda-forge
方案2:修改Snakemake代码(应急用,不推荐长期使用)
- 定位到报错文件:
/home/miniconda3/envs/snakemake/lib/python3.12/site-packages/snakemake/cli.py - 打开文件找到第770行,将
pulp.list_solvers(onlyAvailable=True)修改为pulp.listSolvers(onlyAvailable=True) - 保存文件后重新执行
snakemake --help
方案3:更新Snakemake到兼容新版本pulp的版本
- 激活环境后,更新到最新版Snakemake(已修复该函数名兼容问题):
conda install snakemake -c bioconda -c conda-forge
内容的提问来源于stack exchange,提问作者user3683485

