在snakemake(python3)中,我正在运行一些用python2编写的软件。Snakemake使用python3运行软件,忽略调用python2的文件上的shebang。这是其他人的软件,所以我不想为了在python3中工作而费心重写它
如何强制snakemake在外部脚本的shebang中运行python版本,而不是在当前环境中运行python版本
我知道snakemake允许用户使用--use-conda
强制特定环境,并调用python2环境。但是,我不想这样做,因为生成的脚本的可移植性较差
我尝试过用#!/usr/bin/env python2
或#!/usr/bin/python2
来预先编写外部python脚本,每次脚本都失败了,因为Snakemake使用python3而不是python2来运行它们。在snakemake之外,当我从shell调用脚本时,其他带有这些shebang的程序在python2中运行
这是蛇形档案:
#snakefile
rule all:
input:
my_output.txt
rule foo:
output:
txt = my_output.txt
shell:
"""
external_program.py > {output.txt}
"""
这是external_program.py
:
#!/usr/bin/env python2
print "this will work in python2, but not python3"
我真的认为你应该通过使用conda环境来解决这个问题。我认为你目前的方法是“不太便携”的。所以我决定在这个问题上给出两个答案,一个有,一个没有,conda>;希望我能说服你使用康达方法:)
没有康达
如果您的计算机上安装了python 2,那么您可能可以使用
python2
或/usr/bin/python2
调用它和康达
使用conda解决此问题需要我们制作一个environment.yaml文件:
现在,我们必须像这样参考这个环境:
并对snakemake使用
use-conda
标志相关问题 更多 >
编程相关推荐