#django #nginx #gunicorn #ubuntu-18.04
#django #nginx #gunicorn #ubuntu-18.04
Вопрос:
Я развернул проект Django (закодированный в Windows) на сервере Ubuntu 18.04 с помощью gunicorn и nginx. Существует представление, которое вызывает в командной строке исполняемый файл внешнего пакета, расположенный в /home / user / blast /bin /. ПУТЬ к пакету определен в .profile
export PATH="$PATH:/home/user/ncbi-blast-2.8.1 /bin"
ПУТЬ к пакету отображается в echo $ PATH также в моем проекте django virtualenv.
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/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, без пути к моему пакету:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Активное приложение Django запускается тем же пользователем root ( who
— возвращает того же пользователя). Я могу запустить свой пакет внутри активного приложения Django, указав полный путь к исполняемому пакету, но мне интересно, почему Django не распознает $ PATH, определенный в .profile.