打包FlaskAdmin程序时关于static路径问题的解决
作者:bitQ 发布时间:2023-01-11 20:01:26
1、pyinstaller的使用
网上资料多,此处省略
2、打包时报错
1、可能有些包没有安装(跑跑程序不缺库就行)
2、有些包pyinstaller找不到?
打包时手动添加
--hidden-importMODULENAME,--hiddenimport MODULENAME
3、添加模板和静态文件
如果你使用的是flask-admin内部的模板,建议将其拷贝到工程对应路径(若不,打包后手动将文件拷贝过来也可以)
1、找到Flask-admin包下的templates、static文件(注意:template下有bootstrapX的多个文件夹,我用的是bootstrap4,字节将该目录下的admin放到工程的templates文件夹)
2、工程中放置的文件位置是这样的
3、打包时添加静态文件
用法:
pyinstaller x.py --add-data="源地址;目标地址"。
windows以;分割,linux以:分割
--add-data="admin\static;admin\static" ...
添加好后,spec文件中是这样的,注意,我这里使用了config.py配置文件,也需要作为静态文件打包进去。
4、运行时找不到static中的样式文件
这个问题困扰了我一天,主要原因没有搞清楚Flask的运行原理,Flask-admin用到了Flask的blueprint的东西,这个东西的作用就是将模块进行隔离,比如,admin可以有自己的路由,自己的static、templates存放的位置,具体没有深究,反正对复杂的网站(功能模块多)比较有用。
先上代码:
class myView(admin.BaseView):
play = PlayBack()
def __init__(self, name=None, category=None,
endpoint=None, url=None,
template='admin/index.html',
menu_class_name=None,
menu_icon_type=None,
menu_icon_value=None):
static_path = os.path.join(os.path.dirname(__file__), 'static')
print(static_path)
super(myView, self).__init__(name or admin.babel.lazy_gettext('Home'),
category,
endpoint or 'admin',
'/admin' if url is None else url,
static_path,
menu_class_name=menu_class_name,
menu_icon_type=menu_icon_type,
menu_icon_value=menu_icon_value)
self._template = template
... ...
admin = admin.Admin(app, name="数据库管理", template_mode='bootstrap4', index_view=myView())
代码中,将index_view重新封装了一下,是因为我要设置static_folder这个路径为当前工程中static的路径,测试发现,相对路径不好使,绝对路径好使。
5、再打包,运行,功能正常。
来源:https://blog.csdn.net/qianshuyuankk/article/details/120127316
猜你喜欢
- 最近,随着数据库的日益庞大,本来两个差不多的数据库,我开始发现我的数据库查询起来越来越比我朋友网站的慢了,经过初步对照,问题好像出在访问记录
- 前言看到一个很有意思的项目,其实在之前就在百度飞浆等平台上看到类似的实现效果。可以将照片按照视频的表情,动起来。看一下项目给出的效果。项目地
- * 惯,请先看测试页面:event-test.html 结论:在非IE浏览器,同一元素同一事件类型的处理函数是先进先出的。只有IE下,是先进
- 目前,语音识别,即将语音内容转换为文字的技术已经比较成熟,遥想当时锤子发布会上展示的讯飞输入法语音识别,着实让讯飞火了一把。由于此类语音识别
- 09年的电影缓缓的落下帷幕,以及新年伊始,轰轰烈烈催人癫狂的《阿凡达》。整年里,最让人我记忆深刻的还是《飞屋历险记》。Carl与Ellie被
- 本文实例讲述了python求pi的方法,是一篇翻译自国外网站的文章,分享给大家供大家参考。具体实现方法如下:#_*_ coding=utf-
- 1.简介在学习沐神的深度学习的课程时,发现没有安装torchtext,遂直接尝试pip install torchtext 命令安装,但是安
- 基本概念数字图像定义对于一幅图像,我们可以将其放入坐标系中,这里取图像左上定点为坐标原点,x 轴向右,和笛卡尔坐标系x轴相同;y 轴向下,和
- 本文实例讲述了Python lxml模块的基本使用方法。分享给大家供大家参考,具体如下:1 lxml的安装安装方式:pip install
- 当程序中出现错误时怎么解决?也就是我们所说的bug(缺陷),以及工作中如何对bug进行调试❤ 什么是bug(缺陷)软件缺陷就是通
- 尽管可能是个比较老的话题了,但是我还是从来没有整理过。今天在《精通HTML》一书中看到,这里整理一下。在XHTML中,<html>
- 背景最近有一个需求需要自定义一个多继承abc.ABC与django.contrib.admin.ModelAdmin两个父类的抽象子类,方便
- 本文实例讲述了wxPython定时器wx.Timer简单应用。分享给大家供大家参考。具体如下:# -*- coding: utf-8 -*-
- 在使用Sublime Text3 的时候导numpy的包发现报错,找不到这个包,这是因为要配置pip源才能正常导包,进行from numpy
- 一、使用步骤 1.引入库(安装Python环境、PyQt、PyQt-tools)from PyQt5 import QtCore,
- 我们平时需要使用 Python 发送各类邮件,这个需求怎么来实现?答案其实很简单,smtplib 和 email 库可以帮忙实现这个需求。s
- 阅读上一篇:什么是名字空间<meta http-equiv="Content-Type" co
- 做设计类网址导航的初衷是为了资源整合,也是在尝试解决问题。假定访问用户都是行业人士,或者目地性很强的有一定了解的用户,应该如何考虑这个组织系
- 初学python,我们必须干点有意思的事!从微信下手吧!头像集样例如下: 大家可以发朋友圈开启辨认大赛哈哈~话不多说,直接上代码,注释我写了
- 1. 梯度 * 的影响在一个只有一个隐藏节点的网络中,损失函数和权值w偏置b构成error surface,其中有一堵墙,如下所示损失函数每次