Issue 3133: CGIHTTPRequestHandler does not work on windows
On windows, test_httpservers fails with the error: File "C:\python\py3k\Lib\http\server.py", line 1104, in run_cgi exec(open(scriptfile).read(), {"__name__": "__main__"}) File "<string>", line 3, in <module> File "C:\python\py3k\Lib\socket.py", line 222, in write return self._sock.send(b) TypeError: send() argument 1 must be bytes or read-only buffer, not str There are two problems there: - Lib/http/server.py still looks for os.popen2 or os.popen3 to start a subprocess; these functions have been removed, this code should be rewritten using the subprocess module. - the fallback method, which exec() the cgi script in the python interpreter, fails because sys.stdout should be set to a TextIOWrapper, not a binary socket file. Certainly the fallback method could be removed: every platform implements subprocess nowadays.