python - 在 Windows 上由 PyInstaller 编译时无法访问 Python 3.6 HTTP 服务器
问题描述
我在 Python 3.6 中使用http.server.HTTPServer
,http.server.SimpleHTTPRequestHandler
和socketserver.ThreadingMixIn
. 它按预期工作,我可以从本地网络上的任何设备访问该网页。
我编译它PyInstaller
以创建一个 Windows 可执行文件。该网页可与 localhost 配合使用,但无法从本地网络上的任何设备访问。
我使用另一台设备扫描托管 Web 服务器的计算机,当我正常运行我的脚本(使用 Python 解释器)时,nmap
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()
解决方案
我运行你的代码,它对我有用。操作系统询问打开连接,一切似乎都很好。您必须生成某种日志,以便让我们了解发生了什么问题。在我的运行中,我省略了 -i 开关,因为我没有 .ico 文件。
推荐阅读
- swagger - Swagger Hub `Try it out` 返回 TypeError: Failed to fetch for localhost when using browser option
- notifications - Moodle 限制提交 通知指定老师
- python - 在python中检查列表中的字符串时减少for循环的使用
- ios - 重新加载表格视图后如何处理键盘?
- php - 上传文件大小限制 PHP(Code Igniter)
- regex - 替换文件中的第 N 个字符串匹配项
- mysql - 在 MySQL 数据库上存储密码:哈希与加密?
- pandas - 分析 Dask 数据帧的数据流
- azure-devops - 如何设置 Azure Dev Ops 以构建 Dev Express XAF-XPO 项目?
- javascript - 覆盖 Console.log 以支持 Console.re.log 以调试 iOS Chrome