<p>我使用<code>http.server.HTTPServer</code>、<code>http.server.SimpleHTTPRequestHandler</code>和<code>socketserver.ThreadingMixIn</code>在Python3.6中创建了一个web服务器。它工作正常,我可以从本地网络上的任何设备访问该网页</p>
<p>我用<code>PyInstaller</code>编译它来创建一个Windows可执行文件。该网页可与localhost一起使用,但无法从本地网络上的任何设备访问</p>
<p>我使用另一个设备的<code>nmap</code>来扫描托管web服务器的计算机,当我正常运行脚本(使用Python解释器)时,web服务器使用的端口(<code>8080</code>)似乎是打开的,并且一切正常。但是,当我使用<code>PyInstaller</code>生成的可执行文件时,端口未打开,网页无法访问</p>
<p>可执行文件不会产生任何错误,除此之外,一切正常。<br/>
我已尝试以管理员身份运行.exe文件,并禁用我的防病毒/防火墙。它不起作用</p>
<p>这是我的<code>PyInstaller</code>命令:<br/>
<code>pyinstaller --runtime-tmpdir "" --onefile -i icon.ico script.py</code></p>
<p>下面是我的python文件中的相关代码:<br/></p>
<pre><code>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()
</code></pre>