все Python 3до 3.15Удалено из стандартной библиотекипонятие
http.server.CGIHTTPRequestHandler
удалено
Обработчик http.server, запускавший CGI-скрипты. Удалён в Python 3.15 — переходите на WSGI (wsgiref) или веб-фреймворк.
Синтаксис
http.server.CGIHTTPRequestHandler # до 3.15
CGIHTTPRequestHandler раздавал файлы как SimpleHTTPRequestHandler, а скрипты из каталогов /cgi-bin и /htbin запускал отдельным процессом на каждый запрос; из командной строки его включал флаг python -m http.server --cgi. Его убрали вместе с флагом: CGI давно вышел из употребления, а код никто не сопровождал. Как переписать: тело скрипта оформите WSGI-приложением — функцией app(environ, start_response), которая берёт параметры из environ и возвращает список байтов. Для разработки его запускает wsgiref.simple_server.make_server('', 8000, app).serve_forever(), в работе — любой WSGI-сервер или фреймворк.
Примеры
# Python 3.15+
import http.server
try:
http.server.CGIHTTPRequestHandler
except AttributeError as e:
print(type(e).__name__) # → AttributeError
# Python 3.15+
from wsgiref.util import setup_testing_defaults
def app(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return [f"hello from {environ['PATH_INFO']}".encode()]
environ = {}
setup_testing_defaults(environ)
print(b''.join(app(environ, lambda status, headers: None))) # → b'hello from /'
from http.server import CGIHTTPRequestHandler, SimpleHTTPRequestHandler
print(issubclass(CGIHTTPRequestHandler, SimpleHTTPRequestHandler)) # → True
print(CGIHTTPRequestHandler.cgi_directories) # → ['/cgi-bin', '/htbin']
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности