Python Flask с использованием mod_wsgi в Apache;как заставить работать venv? - PullRequest
0 голосов
/ 24 мая 2018

Я пытался заставить это работать, и везде искал и читал страницу вверх и вниз, но, похоже, не нашел ответа.

У меня есть Apache с mod_wsgi и простойпротестировать приложение Flask.

Я получил его, используя это: https://www.jakowicz.com/flask-apache-wsgi/

Затем я каким-то образом обнаружил, что Apache mod_wsgi использует системный питон, и я хочу использовать venv (https://docs.python.org/3/library/venv.html).

Мое приложение находится в каталоге с нормальной структурой каталогов venv, но как мне заставить это приложение использовать это?

Я нашел это: http://blog.dscpl.com.au/2014/09/using-python-virtual-environments-with.html

Но еслиЯ вставил в python-home мое приложение не работает.

Пара вопросов: Как мне найти версию Python, которую использует мое приложение? Как мне найти мою версию mod_wsgi? Как мне заставить мое приложение использоватьмой venv?

Я новичок в Python и WSGI, я в основном работал с PHP.

Надеюсь, кто-нибудь может объяснить мне, что делать ...

-- Ронни

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Как мне найти версию Python, которую использует мое приложение?

См. Документацию:

предоставляет вам тест, который вы можете использовать.

Как мне найти мою версию mod_wsgi?

Использовать ключ mod_wsgi.version из WSGI environтолковый словарь.См. Ссылку на это в:

Вы также можете использовать:

import mod_wsgi
print(mod_wsgi.version)

Как мне получить мое приложениеиспользовать мой venv?

Документацию по использованию виртуальных сред можно найти по адресу:

Как говорится, есливаш mod_wsgi использует системный Python, и вы хотите использовать другую установку или версию Python, вы не можете заставить ее использовать эту другую установку или версию.Двоичный файл mod_wsgi должен быть скомпилирован с конкретной версией Python, которую вы хотите использовать.

Поскольку системные пакеты mod_wsgi, как правило, являются древними, а не для той версии Python, которую вы хотите использовать, вы должны удалить системный пакет mod_wsgi и установитьmod_wsgi из исходного кода против версии Python, которую вы хотите использовать.Для этого самым простым способом установки является использование pip install mod_wsgi.См .:

0 голосов
/ 25 мая 2018

Продолжение обсуждения в разделе комментариев вашего вопроса:

Предположим, что в папке, созданной в папке /venv, создана виртуальная среда:

- main.py
- /static
  - /js
  - /html
  - /css
- /venv
  - /bin
    - activate

Чтобы активировать виртуальную средуТаким образом, используя локальную копию Python (в отличие от вашей глобальной копии), необходимо использовать следующую команду:

. /venv/bin/activate

. по существу сообщает окну терминала, чтоФайл activate, расположенный по адресу /venv/bin (при условии, что мы находимся на верхнем уровне вышеуказанного каталога), должен быть выполнен.Вы узнаете, что команда выполнена успешно, когда увидите строку (venv) в начале новой строки в окне терминала.

Теперь команда which подтвердит, что вы сейчас используетелокальная копия Python:

which python

Теперь ваша виртуальная среда активирована, вы можете использовать pip для установки любого модуля, который вы хотите локально, в эту виртуальную среду.Вы можете указать, чтобы установить определенную версию модуля, если вы хотите, или просто взять последнюю версию.Версия устанавливаемой Flask или Apache зависит от того, что вы указываете при установке.

Наконец, команда python --version сообщит вам версию этой копии Python 2. python3 --version сделает то же самое для Python 3. Каждый раз, когда вы выполняете скрипт, используя эту локальную копию Python, он будет использовать эту версию Python.

Чтобы получить версию Python из скрипта:

from sys import version_info   
print version_info

Вывод (зависит от вашей версии, но будет выглядеть примерно так):

sys.version_info(major=2, minor=7, micro=13, releaselevel='final', serial=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...