Почему приложения wsgi запускаются в "/"? - PullRequest
2 голосов
/ 09 июля 2019

Я только что развернул свое приложение Flask на Apache2 с помощью mod_wsgi. Однако, чтобы сделать это успешно, мне пришлось изменить код моего приложения. Изменение было в отношении каталогов. Я обнаружил, что при запуске os.getcwd() и os.listdir(cwd) приложение запускалось в корне (/).

Из-за этого я не мог использовать относительные имена путей для доступа к файлам. Например, ранее я обращался к секретным файлам, используя open("../secrets/app_secrets.json"). Поскольку мое приложение теперь работает в /, я вынужден идентифицировать файлы, используя абсолютные пути. Это работает, но очень неудобно, потому что абсолютные пути к файлам отличаются от моего сервера, локальных каталогов и других, использующих мою работу. Итак, я думаю, мой вопрос:

  • Почему это хороший дизайн? Я не могу себе представить, почему mod_wsgi запускает файлы python из "/". На самом деле, как это происходит, мне не под силу.
  • Можно ли как-то изменить это поведение и заставить файл python запускаться из определенной папки, чтобы я мог использовать относительные пути?

Редактировать: Хорошо, я прочитал ссылку, предоставленную Грэмом в комментариях (https://modwsgi.readthedocs.io/en/develop/user-guides/application-issues.html#application-working-directory), но я не могу обдумать это: почему использование относительных путей было бы такой плохой идеей? Мое приложение использует большое количество файловых операций ввода-вывода, и я бы не хотел, чтобы все было по абсолютным путям: у меня много сред, и изменение кода в одной среде будет нелегко копировать в другие. Нет ли простого способа сделать это отдельно? от использования абсолютных путей?

...