一、现状Python 有诸多优秀的 Web 开发框架供我们使用,比如Django、Flask、Sanic。正常的情况下,我们基于这些 Web 框架开发好了网站,最终都会使用 Nginx 搭配 uWSGI 或gunicorn 将其部署在 Linux 服务器上,这样,用户就可以通过 绑定的域名或 IP 地址访问。是的,这是正常的情况。往往很多场景,我们面对的就不是一个正常的情况。正常的情况下一切环境的问题都不是问题,因为有运维的伙伴帮我们处理好了所有环境的问题,从Python特定版本的安装,到特定依赖库的安装,再到服务的配置。一切都不需要操心。但是,如果所有的这些问题都需要自己操心呢?那可真是一个灾难性的问题。Docker的出现解决了一部分的问题,但是对于完全小白而言,docker的安装和使用,又成为了一个问题。州的先生在开发MrDoc觅道文档的时候,就遇到了这个问题。如果要源码安装 MrDoc,那么需要:

  • 安装Python(基本不会出问题)

  • pip安装依赖库(非常容易出问题)

  • 安装依赖的第三方软件包(非常容易出问题)

很多想体验一下 MrDoc 的小伙伴,直接就死在了第二步,各种报错无所适从。有 MrDoc 交流群里的热心伙伴制作了docker镜像,这解决了一定的环境问题,但是对于真正零基础的计算机小白而言,命令行还是自带恐惧属性。怎么办呢?能不能让Python编写的Web项目像 PHP 或GO 语言编写的Web服务一样可以直接启动呢?在互联网上逛荡了老半天,发现老伙计——PyInstaller可以实现这个功能。二、打包PyInstaller是Python中一个用于将Python程序打包为可执行文件的第三方模块。州的先生之前经常使用它将PyQt5编写的桌面图形界面程序打包分发。来看看它在打包Web程序上的应用。PyInstaller官方提供了一个打包Django项目的文档,其链接为:https://github.com/pyinstaller/pyinstaller/wiki/Recipe-Executable-From-Django按照这个文档,我们根据项目的具体情况,运行下述命令:

pyinstaller --name=mysite mysite/manage.py

就会得到一个dist文件夹,里面包含了运行Django项目的所有文件,我们打开命令行界面,使用xxx.exe文件就可以达到像正常使用:

python manage.py

一样的效果。比如运行runserver服务:

xxx.exe runserver

但是,很大概率是运行不起来的,报错的信息,不是缺少模块,就是缺少静态文件。我们需要显式地告诉PyInstaller,哪些包、哪些模块、哪些文件需要一起打包进去。在上一次运行 pyinstaller 命令之后,文件夹下会生成一个.spec后缀的配置文件,其实质是一个Python文件,我们对其进行修改。

import syssys.setrecursionlimit(5000)

在文件第3行的位置,添加上述2行代码,用于避免pyinstaller索引模块层级的错误然后,在datas列表中,将Django项目的静态文件目录、媒体文件目录、以及其他使用到的文件目录全都以元组的形式添加进去。这会让PyInstaller直接将这些文件打包到最后生成的文件夹中。接着,在hidedenimports列表中,将Django项目的应用模块路径也添加进去。可以根据每次生成的报错来一个一个添加,但是那样太浪费时间了,还不如直接都添加进去。修改好了之后,我们把之前生成的build目录和dist目录删除,使用spec文件调用Pyinstaller命令:

pyinstaller MrDoc.spec

等待一会儿,整个Django项目就打包好了,其完整的打包文件如下所示:三、效果打包好之后,我们打开命令行界面,输入命令:

mrdoc.exe runserver

就启动了Django Web网站,如下图所示:在浏览器上访问:127.0.0.1:8000就可以看到我们的MrDoc觅道文档了:

为了方便使用,我们还可以写一个bat脚本,双击即可启动它,免去打开命令行界面输入命令的繁琐:

start ./mrdoc.exe runserver

这样,一个免安装、一键启动的Django网站应用就打包制作完成了。点击“阅读原文”,可以获取这个Windows免安装便携体验版MrDoc下载地址详细使用说明

pyinstaller安装_如何打包Python Web项目,实现免安装一键启动?相关推荐

  1. python docx库安装_详解python中docx库的安装过程

    python中docx库的简介 python-docx包,这是一个很强大的包,可以用来创建docx文档,包含段落.分页符.表格.图片.标题.样式等几乎所有的word文档中能常用的功能都包含了,这个包的 ...

  2. python xlrd安装_详解python中xlrd包的安装与处理Excel表格

    一.安装xlrd 地址 下载后,使用 pip install .whl安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help ...

  3. mysql数据库64免安装_【文】MySQL-8.0.18-winx64免安装配置

    引言:最近手里撸了几个活,需要用到数据库.又不想太麻烦去安装MySQL.翻找u盘.发现了以前下载的MySQL8.0.18它是压缩包,果断上手去年元旦三天前下载的,有点意思开始配置! 1.首先解压文件, ...

  4. python构建知识库_手把手教导实战Python Web项目

    手把手教导实战Python Web项目 一.前言 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的框架模式,即模型M,视图V和控制器C.Django的主要目的是简便.快 ...

  5. 1-3.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之三

    在1-1.Win10系统利用Pycharm社区版安装Django搭建一个简单Python Web项目的步骤之一 基础上进行如下操作: 所有路由不能全部都在myDjango下的urls.py路由文件中, ...

  6. Python Web技术开发软件安装

    关于博主 努力与运动兼备-~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步! 微信公众号: 啃饼思录 QQ: 2810706745(i思录) 今天,博主正好有空,看到网上那么多求助 ...

  7. python web项目(django+Layui+mysql)

    python web项目(django--+Layui+mysql) 1.结果图 2目录结构 3.开干 4.总结 为了完成期末作业,做的一个学生成绩管理系统,采用django+Layui+mysql5 ...

  8. mysql5.7.20非安装版_mysql5.7.20\5.7.21免安装版安装配置教程

    mysql 下载安装配置 5.7.20 / 5.7.21,供大家参考,具体内容如下 1.下载mysql,下载地址 选择操作系统和版本,我是64位win10,点击 Download 后会跳到Oracle ...

  9. python web项目打包部署_打包package

    maven常用命令 maven常用命令 mvn clean --清理打包文件(移除target目录) mvn eclipse:eclipse 将一个maven项目生成eclipse项目 mvn ecl ...

最新文章

  1. jitwatch查看JIT后的汇编码
  2. TIANCHI天池-OGeek算法挑战赛-完整方案及代码(亚军)
  3. [USACO1.3]修理牛棚 Barn Repair
  4. B. Lynyrd Skynyrd(倍增 + 区间最小值)
  5. Andrew Ng Machine Learning 专题【Logistic Regression amp; Regularization】
  6. 苹果sf字体_原来苹果偷偷爱了这些字体
  7. 织梦支持php版本,DedeCMS不支持PHP5.3、5.4及以上版本后台500错误白屏的解决方法...
  8. 通过QQ查看对方的ip地址
  9. mysql不区分英文字母大小写模糊查询
  10. 树莓派系统最新系统镜像Bullseye更换镜像源
  11. 在Excel中从长列​​表中选择多个项目
  12. 笔记-项目干系人管理-控制干系人参与
  13. 我的远程实习笔记day1
  14. 大商创 pc网页跳转对应移动端网页
  15. QT精确延时定时函数
  16. ubuntu18.04安装截图软件shutter
  17. 2015/5/2日-月总结
  18. GoldenDict使用说明
  19. 实现BL616 wifi 蓝牙免密连接
  20. 剑桥大学《2020年AI全景报告》出炉!

热门文章

  1. Codeforces Round #257 (Div. 2) C. Jzzhu and Chocolate
  2. 解决Android拍照保存在系统相册不显示的问题
  3. 09-解决服务器被黑上不了网的问题
  4. 关于postgre中的pg_hba.conf 文件
  5. django.db.utils.OperationalError: (1050, “Table ‘表名‘ already exists)解决方法
  6. QT中ui更改后不能更新的解决方法
  7. springboot之全局处理异常封装
  8. 解决getJSON跨域登录Session丢失的问题
  9. C# Random生成相同随机数的解决方案
  10. aspx页面,中文乱码解决方案