питон к popen не признает scrapy, когда python-скрипт запускается как сервис systemd в

main.pyscrapysubprocess.call()

у меня есть python-скрипт, который должен запустить исполняемый файл, поэтому я использую к popen, чтобы сделать это (используя и тот же результат). чтобы упростить вещи, я просто запустите аргумента помощью scrapy.

import subprocess...p = subprocess.popen(['scrapy', '-h'])
python main.pyscrapy -h

скрипт должен быть запущен внутри vitualenv, который установил scrapy на нем. когда я активировать virtualenv и запустить скрипт, как команда выполняется, как ожидалось.

теперь мне нужно этот скрипт должен быть запущен как сервис systemd в. я создал блок systemd для скрипт следующим образом:

[unit]description=scrapy testafter=network.target[service]user={{ scrapy_user }}workingdirectory={{ test_path }}execstart={{ virtualenv_path }}/bin/python {{ test_path }}/main.py[install]wantedby=multi-user.target
sudo systemctl start scrapy-testp = subprocess.popen(['scrapy', '-h'])

когда я включить и запустить службу с код выполняется нормально до тех пор, когда я получаю исключение, поднятые

file "{{ test_path }}/main.py", line 52, in launch_spider   p = subprocess.popen(['scrapy', '-h'])file "/usr/lib/python2.7/subprocess.py", line 710, in __init__   errread, errwrite)file "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child   raise child_exceptionoserror: [errno 2] no such file or directory
os.chdir('{{ virtualenv_path }}/bin')popenexecstart

я также попытался изменить рабочий каталог, добавив чуть раньше , но я получаю точно такое же исключение. я уверен, что скрипт запущен через виртуальное окружение, потому что (1) он расположен так, в атрибуте и (2) сценарий бы поднять ранее исключений при импорте модулей, которые не установлены в системе питон.