Я пытаюсь переместить мой проект django с сервера разработки на рабочий сервер.Я сгладил почти все с одним (БОЛЬШИМ) исключением.Когда я запускаю следующий код в терминале (используя python manage.py shell
), он работает нормально, однако через мой сервер apache (с mod_wsgi) он не работает нормально.
Мой код:
...
blastn_cline = NcbiblastnCommandline(query=filepath, db=db, evalue=0.1, outfmt=5, out=out, task="blastn-short", dust="no")
process = subprocess.Popen(str(blastn_cline),shell=True,stdout = subprocess.PIPE, stderr = subprocess.PIPE)
proc_out, proc_err = process.communicate()
err_log = open('/Users/basehunt/logs/ncbi_error_log.log', 'a+')
err_log.write("\n"+str(datetime.datetime.now())+": "+str(proc_err))
err_log.close()
...
когда я просматриваю свой лог-файл ncbi_error_log.log
после запуска через терминал, я получаю (в качестве примера):
2011-12-17 12:30:54.771292:
, поэтому никаких ошибок.Тем не менее, когда я запускаю свой сервер apache, я получаю:
2011-12-17 12:28:59.755323: /bin/sh: blastn: command not found
Я пытался много искать решение этой проблемы, но не могу найти ничего, что дает исправление - хотя я надеюсь, что мне не хватаетчто-то явно очевидное, поэтому я могу быстро разобраться в этом.
Дополнительная информация:
Если естьлюбой дополнительный код, который вы хотите увидеть, дайте мне знать.
решено:
путем изменения
process = subprocess.Popen(str(blastn_cline),shell=True,stdout = subprocess.PIPE, stderr = subprocess.PIPE)
на
process = subprocess.Popen('/Users/basehunt/BLAST/ncbi-blast-2.2.25+/bin/'+str(blastn_cline),shell=True,stdout = subprocess.PIPE, stderr = subprocess.PIPE)
в порядкеуказать абсолютно на функцию.Большое спасибо.