Вы можете запустить Apache или какой-либо другой веб-сервер в своем RPI, а затем запустить скрипт Python как скрипт CGI.
I.e. Когда вы вызываете некоторый url (например, http://localhost/cgi-bin/mypython.py), веб-сервер запускает этот скрипт и возвращает стандартный вывод (все напечатанные) в ваш веб-браузер.
Пример очень простой скрипт будет:
#! /usr/bin/env python
print "Content-Type: text/html\n"
print "<html><head><title>Hello world!</title></head>"
print "<body>This is a Python CGI hello world example</body></html>"
Если включить CGI скриптов в настройках веб-сервера и поместить этот скрипт в каталог CGI веб-сервера, вы сможете вызвать его из веб-браузера.
Веб-браузер получит заголовки HTTP (Content-type ...) и HTML, которые распечатываются.
Когда вы хотите, чтобы ваш сценарий, чтобы иметь возможность получить аргументы через HTTP GET или POST методы, с помощью модуля CGI:
#! /usr/bin/env python
import cgi
# Uncomment the following to be able to see traceback in your browser
# if there is any:
#import cgitb
#cgitb.enable() # When you are done debugging, comment this back
# Get input from query string or POST method:
i = cgi.InputStorage()
# Mandatory HTTP header:
print "Content-Type: text/html\n"
# ** At end of headers must be two \n. One is in there, another is added by print statement
# Web site contents:
print "<html><head><title>Hello world!</title></head>"
print "<body>"
print "This is a Python CGI hello world example<br>"
follow = '<a href="http://localhost/cgi-bin/this_script.py?something=blah+blah+blah">Click here to see how something happens!</a>'
if i.has_key("something"):
follow = "<b>Something happened!</b><br>"
follow += "The arg 'something' has value: "+i["something"].value
print follow
print "</body></html>"
Если вы хотите, чтобы вопросы, быть очень простой, а затем служить index.html со всеми своими кнопки, ссылки или что-то еще, и заставить их вызывать разные сценарии CGI для каждого. затем
Сценарий может представлять обратно страницу index.html, когда это делается с его действием:
#! /usr/bin/env python
# Do some work...
# And then:
print "Content-Type: text/html\n"
f = open("/var/www/index.html", "rb")
print f.read()
f.close()
Это только один из способов сделать это без каких-либо рамок, как Django, термос и т.д.
Другим было бы сделать аналогичную вещь, которая является более современной, и это использовать модуль Python на сервере.
Существует такой модуль для Apache и некоторых других веб-серверов.
Когда вы делаете это так, интерпретатор Python запускается внутри веб-сервера, и ваш скрипт не запускается как новый процесс каждый раз, когда кто-то вызывает URL-адрес.
Все очень похоже на PHP.
Написание такого скрипта аналогично написанию сценария CGI.
Существует третий способ.
Вы можете написать свой собственный HTTP-сервер в Python, который будет действовать по URL-адресу, который он получает.
Для этого вы можете использовать уже написанный SimpleHTTPServer из стандартной библиотеки Python.
Просто импортируйте его, подклассируйте его и сделайте так, чтобы он реагировал на разные URL-адреса по-разному.
Почему бы вам просто не использовать 'exec' в вашем скрипте PHP для запуска вашего скрипта python напрямую? –
Я пробовал, но только несколько команд работали при использовании «exec», я не знаю, почему (возможно, для того, чтобы не давать разрешения для их выполнения или что-то в этом роде). Я сделаю некоторое исследование об этом и попробую еще раз. – C10H15N