偶有特殊要求可能需要将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文件也可以主动寻找隐藏模块打包,不过我没试过。


其它文章

Python小技巧:直接运行目录或zip文件

Pyinstaller打包django的更多相关文章

  1. pyinstaller打包django项目成exe以及遇到的一些问题

    1. 环境 环境为:win7 + Python3.6 + Django (2.1.10) + PyInstaller (3.5) 注意: 这里的PyInstaller,笔者是直接使用pip安装,中间会 ...

  2. pyinstaller打包Django项目

    系统:ubuntu18.04 / Centos 7自带Python3.61.安装pip3     apt-get install -y python3-pip     pip3 install --u ...

  3. python3使用pyinstaller打包apscheduler出的错

    本来只是想用Python做一个定时任务小工具在服务器上运行,可是服务器在隔离区,各种禁止上外网,使用pip导出列表那种下载库的方法不管用,导致Python的各种库都下不到,官网离线下载又各种缺依赖,好 ...

  4. PyInstaller打包步骤简记

    pyinstaller 下载地址:http://www.pyinstaller.org/ 下载后用cmd进入解压文件夹 python setup.py install 安装. 最近用pyinstall ...

  5. pyinstaller打包第一个wxPython程序HelloWorld

    pyinstaller 打包hello 7Mb ================= www.pyinstaller.org pip install pypiwin32 pip install pyin ...

  6. [python学习笔记] pyinstaller打包pyqt5程序无法运行

    问题 pyinstaller打包的pyqt5程序在部分电脑上会失败.用户截图提示下边错误日志 无法定位程序输入点 ucrtbase.terminate 于动态链接库 api-ms-win-crt-ru ...

  7. pyinstaller 打包生成exe之后运行提示‘no module name 'xxx'’错误

    python 3.7 pyinstaller 3.4 具体情况: pycharm中点击运行可成功执行,生成正确结果,没有报错. 双击run.py(程序运行的主文件),运行,可生成正确结果,没有报错. ...

  8. PyInstaller 打包 python程序成exe

    pychaim下PyInstaller 打包 python程序 主题是使用PyInstaller 打包python时遇到一些问题以及解决方案,其中将要打包的程序是用tensorflow做的LSTM算法 ...

  9. pyinstaller 打包exe可执行文件

    Python打包EXE方法之一 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装 使用pi ...

随机推荐

  1. linux 服务管理

    服务的分类 查看已安装的服务 RPM包安装的服务 chkconfig --list #查看服务自启动状态,可以看到所有rpm包安装的服务 ps aux #查看已启动的服务 源码包安装的服务 查看服务安 ...

  2. jquery cdn bootstrap静态资源库问题

    使用微软静态资源库 <script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.9.0.min.js">&l ...

  3. Vue项目碰到"‘webpack-dev-server’不是内部或外部命令,也不是可运行的程序或批处理文件"报错

    解决办法: 最后将项目里的“node_modules”文件夹删除,然后在cmd中cd到项目目录,依次运行命令:npm install和npm run build,最后运行npm run dev后项目成 ...

  4. python3安装pcap遇到的问题

    最近想在win7上安装pypcap,遇到了一下问题,现在大概总结一下: 直接使用pip install pypcap,提示pcap.h not found: 网上下载pypcap安装包,运行pytho ...

  5. CentOS7编译安装mysql-5.6.43

    Step 1:安装编译需要的软件和工具 [root@node-1 ~]# yum install gcc gcc-c++ cmake ncurses-devel bison Step 2:创建mysq ...

  6. jsp请求java返回pdf、excel与word

    1,返回pdf关键代码 /** * @todo * @param * @date 2019年3月8日 * @author yanan */ @RequestMapping("/getPdf& ...

  7. 控制台 console.write 中文为问号

    原因: 因为你当前环境代码页是437,是美国英语的字符编码 解决方式: 你把你环境设置成936就是简体中文字符编码环境了 Console.OutputEncoding = Encoding.GetEn ...

  8. XUbuntu18.04(Bionic河狸)正式发布,系统安装升级记录

    XUbuntu18.04(Bionic河狸)正式发布,系统安装升级记录 详细介绍: https://blog.pythonwood.com/2018/04/XUbuntu18.04(Bionic河狸) ...

  9. crm开发之用户重置密码

    重置 密码这这功能. 我是没有在,stark组件中. 内置的.所以需要,自己进行定制.也就只是,在已有的增删改查的基础上,再增加一条url  和相对应的  视图函数. 好的是, 我已经预留了,增加的接 ...

  10. 过滤器(Filter)与拦截器(Interceptor )区别

    目录 过滤器(Filter) 拦截器(Interceptor) 拦截器(Interceptor)和过滤器(Filter)的区别 拦截器(Interceptor)和过滤器(Filter)的执行顺序 拦截 ...