flask用pyinstaller导出的错误及解决

1.1 环境

flask 2.2.2

1.2 socket问题

ValueError: Invalid async_mode specified

查了一下发现这个问题很多人问。

python - "ValueError: Invalid async_mode specified" when bundling a Flask app using cx_Freeze - Stack Overflow

Invalid async_mode specified · Issue #35 · miguelgrinberg/python-socketio · GitHub

里面有很多人的解决方案,我添加了以下语句解决问题。(我用的是waitress,安装eventlet不可行)

from engineio.async_drivers import threading
socketio = SocketIO(async_mode="threading")

1.3 datas提前加入.spec

flask结构所需的static和templates在.spec写出,否则会在运行时找不到资源。(关于路径应该如何写我也没有很清晰)

jinja2.exceptions.TemplateNotFound: xxx/xxx.html

由于在blueprints的每个模块下都分别写了各自的static和templates都要手动加进去,比起重新规划这些文件夹和重写路径,手动写到.spec里还是更划算。

datas=[('./blueprints/static','blueprints/static'),('./blueprints/templates','blueprints/templates')],
#节选自.spec文件

1.4 找不到xxx.pt

FileNotFoundError: [Errno 2] No such file or directory: xxx/xxx/xxx.pt

这是一个python包里的资源,由于没用pyinstaller的-F选项,在生成的dist/app文件夹下直接粘贴这个包解决。暂时没有其他解决方法。

1.5 找不着某个包

ModuleNotFoundError: No module named 'sklearn.ensemble._forest'

在.spec里的hiddenimports缺什么补什么

hiddenimports=['sklearn.ensemble._forest']
#节选自.spec

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值