pyintaller 打包flask_bootstrap时,会有找不到bootstrap/wtf.html报错的问题,解决方法如下

之前在网上搜了好多都是说bootstrap没有初始化,但我的程序是正常运行的,只是打包后就报错,解决方法是在spec文件中将flask_bootstrap中的bootstrap文件夹直接打包到templates文件夹下,spec文件内容如下

from PyInstaller.building.build_main import Analysis, PYZ, EXE, COLLECT, BUNDLE, TOC

block_cipher = None
added_files = [
         ('.\\templates', 'templates'),
         ('.\\static', 'static'),
         ('D:\\Python\\Python27\\Lib\\site-packages\\flask_bootstrap\\templates\\bootstrap','templates\\bootstrap')
         ]
a = Analysis(['start.py'],
             pathex=['D:\\workspace\\kutiku'],
             hiddenimports=[],
             binaries=[],
             datas=added_files,
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='kutiku',
          debug=False,
          strip=False,
          upx=True,
          console=True)

打包后程序运行起来会在tmp目录下生成MEIXXX的文件夹,里面就是你的templates文件夹以及其他的文件夹,在你的启动代码中指定下打包后文件的生成目录,这样,程序就知道去哪里找文件了,代码如下

if getattr(sys, 'frozen', False):
    template_folder = os.path.join(sys._MEIPASS, 'templates')
    static_folder = os.path.join(sys._MEIPASS, 'static')
    app = Flask(__name__, template_folder=template_folder,static_folder=static_folder)
else:
    app = Flask(__name__)

问题就解决了!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值