【发布时间】:2016-11-07 15:11:58
【问题描述】:
我在 Ubuntu 中运行依赖于正在安装的软件包的 python 脚本。这些都已安装,因为我可以调用它们,但脚本不能。
我认为这是因为脚本使用的是 shell(sh) 而不是 bash 版本。我收到此错误消息:
sh: genomeCoverageBed: command not found
但可以在 Bash 中手动调用基因组覆盖床:
ubuntu@fat:~/jonathan/scripty$ genomeCoverageBed
Tool: bedtools genomecov (aka genomeCoverageBed)
Version: v2.26.0
Summary: Compute the coverage of a feature file among a genome.
我的 Stackoverflow 问题的这一部分具有误导性和错误性!:
我已将此 shebang 添加到我的 python 脚本的开头:
#!/bin/bash
但这并没有影响结果,
从我的脚本中删除它仍然会导致相同的错误消息 这是脚本的一部分:
for filename in os.listdir(folder):
if filename.endswith(".sorted.bam"):
namefile = filename.replace(".sorted.bam", "_ncoverage.txt")
folder_name = filename.replace(".sorted.bam", "")
os.system("mkdir " + folder_name)
os.system("coverageBed -s -d -a bam " + folder + filename + " -b " + gff_file + " > " + folder_name + "/" + namefile)
这是我运行此脚本时发生的情况:
ubuntu@fat:~/jonathan/script$ sudo python2.7 script1.py ./Folder/ ./Folder/ref.fasta genbank.gff
sh: coverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: coverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: coverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: coverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: coverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: coverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: coverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: coverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: coverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
sh: genomeCoverageBed: command not found
你对我能做什么有什么建议,或者即使我走在正确的轨道上? 感谢您的帮助!
【问题讨论】:
-
嗯,你把
#!/bin/sh放在python脚本的顶部?它运行一个子shell,而不是python。 -
您的脚本到底是用什么语言编写的,
python或bash?? -
但是你为什么把
#!/bin/bash作为第一行呢?如果它是一个 python 脚本,则输入类似#!/usr/bin/python. -
sudo可能是您的问题。当您sudo在不同的环境中运行时,它可能无法找到您的程序。从外壳,sudo 工作吗?即ubuntu@fat:~/jonathan/scripty$ sudo genomeCoverageBed? -
在常规 shell 中,使用
type genomeCoverageBed查看它是什么类型的命令(别名、函数或可执行文件)。如果它是非标准位置的可执行文件,则可以只使用绝对路径,例如/home/you/bin/genomeCoverageBed.
标签: python linux bash shell ubuntu