我使用http.server.HTTPServer
、http.server.SimpleHTTPRequestHandler
和socketserver.ThreadingMixIn
在Python3.6中创建了一个web服务器。它工作正常,我可以从本地网络上的任何设备访问该网页
我用PyInstaller
编译它来创建一个Windows可执行文件。该网页可与localhost一起使用,但无法从本地网络上的任何设备访问
我使用另一个设备的nmap
来扫描托管web服务器的计算机,当我正常运行脚本(使用Python解释器)时,web服务器使用的端口(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()
我运行你的代码,它对我有效。O.S.询问有关打开连接的问题,一切似乎都正常。为了让我们了解出了什么问题,您必须制作某种日志。在我的运行中,我省略了-i开关,因为我没有.ico文件
好的,我解决了这个问题,但我仍然不明白是什么原因造成的。从一开始,我就在AppData中的一个文件夹中构建脚本:它不工作,并且没有显示Windows防火墙警告/确认
我将脚本移到桌面并在这里编译:Windows防火墙确认显示(this one),可执行文件运行良好
我想可能防火墙之前已经标记了我的程序,并且所有后续的构建都被列入黑名单或者类似的东西,所以我尝试在原始位置编译脚本,但这次我重命名了它,并删除了以前生成的所有文件:它也不起作用(并且没有防火墙确认/警告)
所以现在我很确定这个错误是由防火墙引起的,它与构建的位置有关,但我真的不明白为什么
相关问题 更多 >
编程相关推荐