supernorb Ответов: 1

Как запускать Python-файлы из веб-браузера по адресу http://localhost/ ?


Привет, я могу запускать файлы python из веб-браузера по адресу http://localhost/cgi-bin/myfile.py но я хочу запустить их по адресу http://localhost:anyport/ , как я могу это сделать?

Я читал книгу по Python, и там говорилось, что я должен был активировать веб-сервер, чтобы понять код python, используя только 3 строки кода, поместить их в файл .py и запустить скрипт, а затем я могу ввести "http://localhost:anyport/" в адресной строке веб - браузера и посмотреть, как он работает.

Я сделал это, но это не сработало, вот 3 строки кода:

#!usr/bin/python
из BaseHTTPServer импортируйте HTTPServer
из SimpleHTTPServer импортируйте SimpleHTTPRequestHandler
HTTPServer(('localhost',8000), SimpleHTTPRequestHandler).serve_forever()


Сохраните их как "activate.py"
Я немного запутался здесь, он сказал "запустить этот сценарий", и мне интересно, означает ли "запустить" здесь "запустить". activate.py-с помощью python.exe-что??? Если да, то я сделал это и после набора текста "http://localhost:8000", веб-браузер показал не удается отобразить страницу (адрес не существует). Не могли бы вы пояснить, что они говорят, что программирование веба на python очень легко, но я не чувствую его легкости, это даже не проще, чем PHP.

Ваша помощь будет высоко оценена! Спасибо!
PS: А как насчет #!usr/bin/python ? Это то же самое на всех машинах, установленных с Python? В чем дело?, Спасибо


ОБНОВЛЕНИЕ
На самом деле, сценарий я сохранил как "activate.py" не удалось запустить успешно, ошибка сказала "нет модуля с именем BaseHTTPServer", как я могу это исправить?
Спасибо!

1 Ответов

Рейтинг:
2

TRK3

Три строки кода, которые вы перечисляете, являются кодом python.

Вы запускаете скрипт с помощью python.exe

Первые две строки импортируют некоторые классы python из различных модулей.

Третья строка создает "HTTPServer". Затем он вызывает функцию serve_forever() HTTPServer.

Видеть: http://docs.python.org/py3k/library/http.server.html[^]

Предположительно, эта функция непрерывно прослушивает назначенный порт ('localhost', 8000) и обрабатывает запросы с помощью SimpleHTTPRequestHandler

Видеть: http://docs.python.org/library/simplehttpserver.html[^]

Цитата:
Этот класс обслуживает файлы из текущего каталога и ниже, непосредственно сопоставляя структуру каталогов с HTTP-запросами.


SimpleHTTPServer не обрабатывает CGI-файлы, а просто обслуживает статический html.

Существует класс python, который делает это:

http://docs.python.org/library/cgihttpserver.html[^]

Однако нет никаких причин, по которым вы должны использовать любой из них для достижения заявленной цели.

У вас уже есть запущенный веб-сервер (Apache?) - вы должны настроить его для обслуживания нужных страниц из нужного каталога на нужном порту. (См.документацию для вашего веб-сервера, чтобы выяснить, как это сделать.)

Если вы просто пытаетесь изучить python для программирования веб-страниц, то придерживайтесь запуска их из http://localhost/cgi-bin/myfile.py -не утруждайте себя попытками запустить веб-сервер на python.


supernorb

Спасибо, то, как Вы упомянули о настройке сервера Apache для достижения моей цели, очень хорошо, но я думаю, что есть еще один способ, который я прочитал из своей книги (используя 3 строки кода выше), я хочу заставить его работать, и мне кажется, что здесь что-то не так, я действительно не хочу включать "cgi-bin" в путь к ресурсам.

TRK3

Это действительно зависит от того, какова ваша действительная цель.

Если вы хотите просто обслуживать файлы python с другого пути, то правильный способ сделать это настроить ваш сервер Apache.

Если то, что вы действительно хотите сделать, это изучить python и увидеть все, что он может сделать, тогда, возможно, у вас есть веская причина для запуска сервера python-но даже это довольно сомнительно.

И что же это такое?