Pyinstaller打包django
偶有特殊要求可能需要将django程序打包成exe可执行文件,方便在电脑直接点击运行。这里用的是打包python代码的常用库Pyinstaller. 虽然用Pyinstaller支持打包Django,但也存在一些坑,在此记录一下。
环境:
- Python 3.6
- Django 2.0
- Pyinstaller 3.4
打包开始之前,先确定写的django程序能否正常运行。确定无误后在开始打包。Pyinstaller 打包你可以选择打包成一个exe可执行文件,或者是一个文件夹,包含许多配置文件。对于简单的脚本,不含其它第三方库,打包成一个exe执行文件倒是个不错的选择。不过对于复杂点的程序,比如django之类的,最好不要选择打包成一个可执行文件,这不是一个明智的选择。
ModuleNotFoundError
用pyinstaller打包django时,会有许多Module不会被自动找到而打包成功,比如打包完后运行常常出现这样的错误:ModuleNotFoundError: No module named 'XXXXX'
面对这样的问题,最好的方法就是缺啥补啥,假设打包后的目录结构如下,django-app是打包的文件夹名
|—— build/
|—— dist/
|—— django-app/
|——aa
|——bb
|——nn
在系统文件夹中找到相应的模块,将其复制,粘贴到django-app内,完美解决问题。这也是打包成文件夹形式的好处之一。
app莫名消失
上面这种问题还好,他给出了错误提示。遇到最坑的问题是,他打包django程序时,不会自动将app里的代码文件给也打包。
正常应该是这样的。
|—— dist/
|—— django-app/
|——appA
|——migrations/
|——__init__.py
|——models.py
|——......
|——views.py
|——bb
|——nn
他打包后是这样的,app里只有一个migrations文件夹,没有其它代码文件。运行后,在浏览器上看不到app。当时一直在想办法啊,最后无意中点进app文件夹才发现这个问题,一句mmp卧槽。
|—— dist/
|—— django-app/
|——appA
|——migrations/
|——bb
|——nn
TemplateNotFound
如果有Template,static,等静态文件,同样是将其复制到 打包后的文件夹内。
其它
当时还遇到其它问题,不过当时没记录,现在打包也没遇到之前的问题。在打包程序完后,会生成一个spec文件,在里面可以设置打包名字,隐藏模块导入,静态文件等等。不过我试了隐藏模块导入,这个功能不太好使,有时还是直接复制粘贴方便。。。还有设置pyinstaller的hook文件也可以主动寻找隐藏模块打包,不过我没试过。
其它文章
Pyinstaller打包django的更多相关文章
- pyinstaller打包django项目成exe以及遇到的一些问题
1. 环境 环境为:win7 + Python3.6 + Django (2.1.10) + PyInstaller (3.5) 注意: 这里的PyInstaller,笔者是直接使用pip安装,中间会 ...
- pyinstaller打包Django项目
系统:ubuntu18.04 / Centos 7自带Python3.61.安装pip3 apt-get install -y python3-pip pip3 install --u ...
- python3使用pyinstaller打包apscheduler出的错
本来只是想用Python做一个定时任务小工具在服务器上运行,可是服务器在隔离区,各种禁止上外网,使用pip导出列表那种下载库的方法不管用,导致Python的各种库都下不到,官网离线下载又各种缺依赖,好 ...
- PyInstaller打包步骤简记
pyinstaller 下载地址:http://www.pyinstaller.org/ 下载后用cmd进入解压文件夹 python setup.py install 安装. 最近用pyinstall ...
- pyinstaller打包第一个wxPython程序HelloWorld
pyinstaller 打包hello 7Mb ================= www.pyinstaller.org pip install pypiwin32 pip install pyin ...
- [python学习笔记] pyinstaller打包pyqt5程序无法运行
问题 pyinstaller打包的pyqt5程序在部分电脑上会失败.用户截图提示下边错误日志 无法定位程序输入点 ucrtbase.terminate 于动态链接库 api-ms-win-crt-ru ...
- pyinstaller 打包生成exe之后运行提示‘no module name 'xxx'’错误
python 3.7 pyinstaller 3.4 具体情况: pycharm中点击运行可成功执行,生成正确结果,没有报错. 双击run.py(程序运行的主文件),运行,可生成正确结果,没有报错. ...
- PyInstaller 打包 python程序成exe
pychaim下PyInstaller 打包 python程序 主题是使用PyInstaller 打包python时遇到一些问题以及解决方案,其中将要打包的程序是用tensorflow做的LSTM算法 ...
- pyinstaller 打包exe可执行文件
Python打包EXE方法之一 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装 使用pi ...
随机推荐
- QT 二维图形 原理、发展及应用
转载自 网易博客:sun的博客 http://zhouyang340.blog.163.com/blog/static/3024095920126710504178/ 2D绘图 Qt4中的2D绘图部分 ...
- Java虚拟机对象存活标记及垃圾收集算法解析
一.对象存活标记 1. 引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器就加1:当引用失效时,计数器就减1:任何时刻计数器都为0的对象就是不可能再被使用的. 引用计数算法(Re ...
- 云栖大会day2总结 上午
第二天上午主要是参与了开发者专场 上 09:00-09:40 线上线下融合时代的工程师成长 李佩 饿了么高级算法总监 09:40-10:20 如何统一阿里巴巴代码规范:探寻工程师文化之路 玄坛 阿里巴 ...
- 算法之Python实现 - 002 : 换钱的最少货币数补充(每种货币只能使用一次)
[题目]:给定数组arr,arr中所有的值都为正数且不重复.每个值代表一种面值的货币,每种面值的货币仅可以使用一张,再给定一个整数aim代表要找的钱数,求组成aim的最少货币数. [代码1]:时间与额 ...
- sha256_transform
DECLSPEC void sha256_transform (const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, u32 *dig ...
- jar 接收utf-8字符乱码现象
1.今天用php去调用jar出现乱码现象 需要对传递的中文字符进行编码之后再传递这里我用的是urlencode编码,让后java再解码就正常了 这里贴一下代码: <?phpexec(" ...
- linux 安装 mysql
二进制安装mysql 1,下载安装包,使用国内站点速度会比较快,如清华站点https://mirrors.tuna.tsinghua.edu.cn 登陆linux系统后,使用wget 进行下载mysq ...
- 《Orange’s》保护模式
保护模式 完整代码 ; ========================================== ; pmtest1.asm ; 编译方法:nasm pmtest1.asm -o pmte ...
- VS 提示对象被多次指定;已忽略多余的指定
最近有一个工程编译老是出现这个问题,网上的解决方案说是工程目录下有同名的源文件,所以编译出了同名的obj.然而我检查了一下并没有.经尝试,把所有文件从项目中移除再重新添加进来就行了..应该是因为我反复 ...
- pwnable.kr-passcode-witeup
进入远端运行, 废话不多说,下载下来分析. 根据提示,编译一下子. 知道问题了. 想象着,输入的值到了passcode1和passcode2的值作为地址的地方,passcode1处刚输入值时,程序终止 ...