Активное приложение Django не распознает глобальную переменную $ PATH - PullRequest
1 голос
/ 24 марта 2019

Я развернул проект Django (закодированный в Windows) на сервере Ubuntu 18.04 с gunicorn и nginx. Существует вид, который вызывает в командной строке исполняемый файл внешнего пакета, расположенный в / home / user / blast / bin /. ПУТЬ к пакету определена в .profile

export PATH="$PATH:/home/user/ncbi-blast-2.8.1+/bin"

Пакет PATH виден в echo $ PATH также в моем проекте django virtualenv.

/ USR / местные / SBIN: / USR / местные / бен: / USR / SBIN: / USR / бен: / SBIN: / бен: / USR / игры: / USR / местные / игры: / оснастке / ящик: /home/ka4an/ncbi-blast-2.8.1+/bin

Я могу запустить исполняемый файл пакета в some_script.py в основной оболочке и в django virtualenv, например: subprocess.run("package_executable", shell=True, stdout=log_file, stderr=log_file) и возвращает ожидаемый результат. Однако при запуске в активном приложении Django через views.py возвращается, что package_executable не найден. Я обнаружил, что внутри активного приложения Django у меня другой вывод echo $ PATH, без PATH для моего пакета:

/ USR / местные / SBIN: / USR / местные / бен: / USR / SBIN: / USR / бен: / SBIN: / бен

Активное приложение Django запускается тем же пользователем root (who - возвращает того же пользователя). Я могу запустить свой пакет в активном приложении Django, указав полный путь к исполняемому файлу пакета, но мне интересно, почему Django не распознает $ PATH, определенный в .profile.

...