首页 > 解决方案 > 在 Windows 上由 PyInstaller 编译时无法访问 Python 3.6 HTTP 服务器

问题描述

我在 Python 3.6 中使用http.server.HTTPServer,http.server.SimpleHTTPRequestHandlersocketserver.ThreadingMixIn. 它按预期工作,我可以从本地网络上的任何设备访问该网页。

我编译它PyInstaller以创建一个 Windows 可执行文件。该网页可与 localhost 配合使用,但无法从本地网络上的任何设备访问。

我使用另一台设备扫描托管 Web 服务器的计算机,当我正常运行我的脚本(使用 Python 解释器)时,nmapWeb 服务器使用的端口( )似乎是打开的,并且一切正常。8080但是,当我使用端口生成的可执行文件时,PyInstaller该端口未打开且网页无法访问。

可执行文件不会产生任何错误,除此之外一切正常。
我试图以管理员身份运行 .exe 文件,并为此禁用我的防病毒/防火墙。它不起作用。

这是我的PyInstaller命令:
pyinstaller --runtime-tmpdir "" --onefile -i icon.ico script.py

这是我的python文件中的相关代码:

import http.server  
import socketserver

port = 8080

class ThreadingSimpleServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
    pass #using this so the webserver can handle mutliple requests at a time

class myWebServer(http.server.SimpleHTTPRequestHandler):

    def do_POST(self):
        #does stuff

try:
   server = ThreadingSimpleServer(('', port), myWebServer)
   server.serve_forever()

except KeyboardInterrupt:
    print('^C received, shutting down the program.')
    server.socket.close()

标签: pythonpython-3.xwindowspyinstallerhttpserver

解决方案


我运行你的代码,它对我有用。操作系统询问打开连接,一切似乎都很好。您必须生成某种日志,以便让我们了解发生了什么问题。在我的运行中,我省略了 -i 开关,因为我没有 .ico 文件。


推荐阅读