Вызов скрипта python внутри другого скрипта python с использованием двух разных envs - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть два разных приложения Django, оба работают на одном сервере Linux (Ubuntu 18.04 LTS), используя 64-битный Python 3.6.

Приложение A работает в Django 1.11 и virtualenv A .

Приложение B работает в Django 2.1 и virtualenv B .

В Приложение B Мне нужно вызвать функцию для переноса таблиц в Приложение A , когда я запускаю команду в оболочке, все работает нормально.

/path/to/envA/python /path/to/appA/manage.py migrate

Но когда я пытаюсьчтобы выполнить ту же команду внутри приложения B с использованием подпроцесса У меня ошибка без модуля , я подозреваю, что это из-за различных envs.

Это мой код в приложении B:

subprocess.Popen(["/path/to/envA/python", "/path/to/appA/manage.py", "migrate"], 
                 stdin=subprocess.PIPE,
                 stdout=subprocess.PIPE,
                 stderr=subprocess.PIPE)

Я еще пытался использовать shell=True, но это не работает и зависает моя консоль.

1 Ответ

0 голосов
/ 29 сентября 2018

Я смог решить эту проблему, передав переменную env в Popen функцию:

subprocess.Popen(["/path/to/envA/python", "/path/to/appA/manage.py", "migrate"], 
                 stdin=subprocess.PIPE,
                 stdout=subprocess.PIPE,
                 stderr=subprocess.PIPE,
                 env={"PATH": "/path/to/envA/python"})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...