Как настроить веб-сервер Apache на запуск Python в Windows

Скрипты Python можно запускать в окружении Apache аналогично запуску скриптов PHP. Для этого нужно сделать небольшую настройку.

Я устанавливал веб-сервер по этой инструкции, если вы устанавливали по другой инструкции, то отредактируйте пути под свои значения.

1. Установите Python

Если у вас ещё не установлен Python, то скачайте установщик здесь: https://www.python.org/downloads/windows/ (файл Windows x86-64 executable installer).

Я установил в предлагаемый путь, но также выбрал добавление папки с исполнимыми файлами Python в переменные окружения (возможно, это делать необязательно).

Забегая вперёд скажу — путь до папки с установленным Python нужно будет указывать в начале каждого Python cgi скрипта, поэтому или выберите более простую папку, куда вы устанавливаете Python, либо запомните имя путь до предложенной директории.

В конце программа установки предложила снять максимальное ограничение на длину пути — я согласился (возможно, это делать необязательно):

2. Настройка Apache на запуск Python CGI

Теперь откройте для редактирования файл httpd.conf, у меня он расположен по пути C:\Server\bin\Apache24\conf\httpd.conf.

Найдите там строку

Options Indexes FollowSymLinks

и добавьте к ней ExecCGI. Должна получиться такая строка (ВНИМАНИЕ: набор опций у вас может быть другим):

Options Indexes FollowSymLinks ExecCGI

Теперь найдите строку:

#AddHandler cgi-script .cgi

Раскомментируйте её, то есть удалите символ # в начале строки и добавьте к концу строки .py. Новая строка будет выглядеть примерно так:

AddHandler cgi-script .cgi .py

3. Перезапустите Apache

c:\Server\bin\Apache24\bin\httpd.exe -k restart

4. Запустите тестовую страницу Python

В папке для ваших сайтов (у меня это C:\Server\data\htdocs\) создайте файл test.py и скопируйте в него:

#!C:\Users\Alex\AppData\Local\Programs\Python\Python37\python.exe
print ("Content-type: text/html\n\n")
print
print ("<html><head>")
print ("")
print ("</head><body>")
print ("Hello.")
print ("</body></html>")

Обратите внимание на самую верхнюю строку, то есть на C:\Users\Alex\AppData\Local\Programs\Python\Python37\python.exe — вам нужно заменить её на своё значение, указав путь до файла python.exe. Даже если вы выбрали предложенную по умолчанию папку, как минимум, вам нужно заменить имя пользователя Alex на имя своего пользователя.

ПРИМЕЧАНИЕ: обратите внимание, что путь до файла python.exe может различаться в зависимости от выбранной папки для установки, имени пользователя (если вы установили в C:\Users\), а также в зависимости от версии, например, это может быть папка Python39:

#!C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Local\Programs\Python\Python39\python.exe

Отредактируйте самую верхнюю строку в соответствии с вашей установкой.

Отройте адрес с файлом: http://localhost/test.py

Должна будет появиться надпись

Hello.

Как показано на скриншоте ниже:

Смотрите также: Как в скрипте Python получить данные от веб-страницы методами GET и POST в Windows


Comments

    1. А другие файлы открываются нормально? Похоже на неправильную настройку сервера не связанную с Python.

    2. вы неверно указали имя файла,обратите внимание как называется директива(путь)к python

      #!C:\Users\User\AppData\Local\Programs\Python\Python39\python.exe

      Проверил,символы #! ОБЯЗАТЕЛЬНЫ!ВСЕ РАБОТАЕТ

      1. Спасибо за подсказку. Пожалуй, нужно переписать инструкцию и указать, что устанавливать нужно в папку C:\Python\ без номера версии. Так должно быть меньше путаницы с указанием строки после шебанга.

        Символы #! действительно обязательны. Они называются шебангом и это пришло из Linux/Unix, там во всех файлах скриптов после шебанга указывается программа обработчик, благодаря чему любой скрипт можно запустить двойным кликом и он будет выполнен правильным интерпретатором.

  1. Этим способом можно формировать страницу с помошью Python, а можно ли передавать данные в исполняемый файл Python из html страницы, например после нажатия кнопки на ней, а потом вернуть их в измененном варианте?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

wp-puzzle.com logo