做药物研发数据库系统网站时,想要添加本地BLAST功能。用biopython中的blast接口(需要本地安装blast+)。
由于编辑过windows系统的环境变量,在命令行直接输入“blastp -db xxx -outfmt 5 …”就可以直接输出序列比对结果。biopython实际上就是用了这个命令。
我用的是Python环境,Django框架做的网站,在视图模块中调用biopython中的相关函数,并处理blast输出的结果就可以得到我想要的序列比对结果。这种方法在Django内部的测试环境(>python manage.py runserver)下是没有问题的。但是一旦放到apache环境中部署就会产生问题,总是在执行blast代码的时候出现非零错误(returned non-zero exit status 1)。试了很多方法,也查了很久得不到解决方法。

最后,看到网上说估计还是路径问题。于是我想到,会不会是apache中它不识别环境变量中的blastp,而是要输入绝对路径?
于是我在NcbiblastpCommandline函数中加了个参数:cmd=’D:\Program Files\blast-2.2.28+\bin\blastp’,这个参数默认是blastp,我改成绝对路径后调试发现错误消失,可以正常使用。