当 运行 与 python 一起爆炸时,'blastp' 未被识别为内部或外部命令错误

'blastp' is not recognized as an internal or external command error when running blast with python

我正在尝试 运行 使用 biopython 使用 Bio.Blast.Applications 进行本地 BLAST。但是,当 运行 宁以下代码时:

from Bio.Blast.Applications import NcbiblastpCommandline

result = r"C:\Users\Uzytkownik\Desktop\tests\result.xml" 
q = r"C:\Users\Uzytkownik\Desktop\tests\fastas\my_example2.faa"
database = r"C:\Users\Uzytkownik\Desktop\tests\my_examplemultif.faa"

blastp_cline = NcbiblastpCommandline(query = q, db = database, evalue = 0.001, outfmt=5, out = result)
stdout, stderr = blastp_cline()

我收到一条错误消息:

ApplicationError: Non-zero return code 1 from 'blastp -out C:\Users\Uzytkownik\Desktop\tests\result.xml -outfmt 5 -query C:\Users\Uzytkownik\Desktop\tests\fastas\my_example2.faa -db C:\Users\Uzytkownik\Desktop\tests\my_examplemultif.faa -evalue 0.001', message "'blastp' is not recognized as an internal or external command,"

我已经尝试 运行 使用子进程和 os 进行此操作,但每次都出现相同的错误。

当我 运行 通过命令行查询时一切正常(我使用的是 blast 2.9.0+),所以我真的不确定问题出在哪里。如有任何帮助,我们将不胜感激!

首先找到 blastp 可执行文件的安装位置,并将其作为参数提供给 NcbiblastpCommandline

from Bio.Blast.Applications import NcbiblastpCommandline

blastp_path = r"C:\path\to\blastp.exe"
result = r"C:\Users\Uzytkownik\Desktop\tests\result.xml" 
q = r"C:\Users\Uzytkownik\Desktop\tests\fastas\my_example2.faa"
database = r"C:\Users\Uzytkownik\Desktop\tests\my_examplemultif.faa"


blastp_cline = NcbiblastpCommandline(cmd=blastp_path, query=q, db=database, evalue=0.001, outfmt=5, out=result)

如果您现在执行 print(blastp_cline),它应该打印出将成为 运行 的完整命令。通过 copy/pasting 此输出并从命令行 运行 对其进行双重检查是否有效。如果可行,那么

stdout, stderr = blastp_cline()

应该也可以。