Как правильно запустить CGI http.сервер, расположенный в подпапке в Python 3.7? - PullRequest
0 голосов
/ 06 августа 2020

Среда:

Python 3.7.7

Windows 10 64 бит

Проблема:

Мой основной скрипт кое-что делает. Мне нужно отобразить отчет о его действиях.

Я создал мини-сайт, на котором отображаются данные.

Я поместил этот мини-сайт в подпапку '/report'.

Внутри этой подпапки '/ report' у меня есть скрипт Report.py, который запускает http.server

Мой главный скрипт выполняет этот Report.py, чтобы открыть мини-сайт в браузере. Я вот уже 3 дня работаю над ним и мне так и не удалось заставить его работать.

Вот так устроен мой код:

main.py
report/Report.py
report/index.py

вот main.py:

from report import Report
Report.StartReportTool()

и вот что я пробовал в файле Report.py и какую ошибку получаю. Эти коды ниже являются содержанием метода StartReportTool ():

№ 1:

port=8888
address=("",port)
server=http.server.HTTPServer
handler=http.server.CGIHTTPRequestHandler
handler.cgi_directories=["report"]
httpd=server(address,handler)
print(f"Report tool server started on port {port}")
webbrowser.open(f'http://localhost:{port}/report/index.py', new=2)
httpd.serve_forever()

Ошибка: Открытый URL-адрес браузера 'http://localhost: 8888 / report / index.py будет отображать исходный код index.py вместо выполнения скрипта index.py

=========== ===================== № 2 Я отредактировал URL-адрес, передаваемый в webbrowser.open

port=8888
address=("",port)
server=http.server.HTTPServer
handler=http.server.CGIHTTPRequestHandler
handler.cgi_directories=["report"]
httpd=server(address,handler)
print(f"Report tool server started on port {port}")
webbrowser.open(f'http://localhost:{port}/index.py', new=2) #<= I change this line
httpd.serve_forever()

Ошибка: Браузер открывает этот URL-адрес 'http://localhost: 8888 / index.py' и отображает следующее сообщение об ошибке:

Error response
Error code: 404
Message: File not found.
Error code explanation: HTTPStatus.NOT_FOUND - Nothing matches the given URI.

============= =================== N ° 3 Я отредактировал папку, переходящую в handler.cgi_directories

port=8888
address=("",port)
server=http.server.HTTPServer
handler=http.server.CGIHTTPRequestHandler
handler.cgi_directories=["/"] #<= I change this line
httpd=server(address,handler)
print(f"Report tool server started on port {port}")
webbrowser.open(f'http://localhost:{port}/index.py', new=2)
httpd.serve_forever()

Ошибка : Браузер открывает этот URL 'http://localhost: 8888 / index.py' и показывает в браузере следующее сообщение об ошибке:

Error response
Error code: 404
Message: No such CGI script ('//index.py').
Error code explanation: HTTPStatus.NOT_FOUND - Nothing matches the given URI.

Я не знаю, что еще попробовать. Кто-нибудь знает, что я делаю не так?

1 Ответ

0 голосов
/ 06 августа 2020

Это сработало для меня (обратите внимание на sla sh):

handler.cgi_directories=["/report"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...