Скрипты 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
Связанные статьи:
- Как в скрипте Python получить данные от веб-страницы методами GET и POST в Windows (100%)
- Apache для Windows (52.4%)
- Как запустить Apache на Windows (52.4%)
- Документация по Apache на русском языке (52.4%)
- Как подключить PHP к Apache на Windows (52.4%)
- Как тестировать отправку писем в PHP на Windows (RANDOM - 50%)
http://localhost/test.py
И такой ответ:
Forbidden
You don't have permission to access /test.py on this server.
А другие файлы открываются нормально? Похоже на неправильную настройку сервера не связанную с Python.
вы неверно указали имя файла,обратите внимание как называется директива(путь)к python
#!C:\Users\User\AppData\Local\Programs\Python\Python39\python.exe
Проверил,символы #! ОБЯЗАТЕЛЬНЫ!ВСЕ РАБОТАЕТ
Спасибо за подсказку. Пожалуй, нужно переписать инструкцию и указать, что устанавливать нужно в папку C:\Python\ без номера версии. Так должно быть меньше путаницы с указанием строки после шебанга.
Символы #! действительно обязательны. Они называются шебангом и это пришло из Linux/Unix, там во всех файлах скриптов после шебанга указывается программа обработчик, благодаря чему любой скрипт можно запустить двойным кликом и он будет выполнен правильным интерпретатором.
Этим способом можно формировать страницу с помошью Python, а можно ли передавать данные в исполняемый файл Python из html страницы, например после нажатия кнопки на ней, а потом вернуть их в измененном варианте?
Приветствую! Интересный вопрос. Ответ я написал в статье «Как в скрипте Python получить данные от веб-страницы методами GET и POST в Windows».