2015-01-06 4 views
-1

В конце питона сценария, я пытаюсь запустить подпроцесс:Не удается запустить Python внутри подпроцесса

subprocess.Popen(['python', '/var/lib/classifier/classify.py'], stderr=open('/var/log/scrapyd/dailyalerts/classifier_logfile.log', 'a')) 

К сожалению, это не работает ... The classifier_logfile.log содержит следующую ошибку:

Странная часть, если я запускаю «python /var/lib/classifier/classify.py» из самого терминала, он просто работает. Поэтому из-за подпроцесса.Popen он не может импортировать библиотеки, но я не знаю почему.

Может ли кто-нибудь помочь мне?

+2

Это проблема путь, наиболее probabily –

+0

Вы можете попробовать запустить его с аргументами как строка: 'subprocess.Popen ('питона /var/lib/classifier/classify.py', оболочки = True, STDERR = open ('/ var/log/scrapyd/dailyalerts/classifier_logfile.log', 'a')) ' –

ответ

1

Вам нужно установить аргумент cwd в функции Popen в каталог, в котором вы запускаете команду.

subprocess.Popen(['python', '/var/lib/classifier/classify.py'], 
    stderr=open('/var/log/scrapyd/dailyalerts/classifier_logfile.log', 'a'), 
    cwd='<your dir>') 
+0

messing with cwd чаще всего является плохой идеей. –

+0

Не работает, к сожалению. Я сейчас пытаюсь добавить классификатор в качестве промежуточного программного обеспечения для очистки –

Смежные вопросы