Django打包生成exe,在win环境开机自启动
前言
该文章是本人在实际项目中遇到的各种问题,供大家参考。
- 包含了如何将django项目打包生成exe可执行文件。
- 如何将该exe不在命令行使用如: manage.exe runserver,而是用bat代替
- 最后想开机自动启动bat文件,用.vbs文件放入电脑开机自启动环境。
- 该文章是本人第一次在csdn上写,若有错误,请大家留言我会一一回复,感谢.
- 因为是公司项目文件所以不上传到github,抱歉
- 本人参考文献
- django打包exe
- exe文件开机自启动
配置环境
首先需要使用python安装pyinstaller
这里推荐先新建一个虚拟环境,这样生成的exe文件可以尽可能的小一些
pip install pyinstaller
pip install django==2.0.0

然后再安装你项目需要用到py库。最后本人实在python的虚拟环境中创建exe(库不多)所以文件可以显得较为小
添加可配置文件
新建一个ini文件

注意格式与注意,内容都为字符串
安装configparser包

pip install configparser
使用方式说明
import configparser
cf = configparser.ConfigParser()
cf.read('C:/Bioecare/mobile_version/config.ini')
secs = cf.sections()
print(secs) # ['Mysql', 'Mqtt', 'Static']
options = cf.options('Mysql')
print(options) # ['mysql_name', 'mysql_user', 'mysql_password', 'mysql_host', 'mysql_port']
items = cf.items('Mysql')
print(items) # [('mysql_name', 'mobile_version_1'), ('mysql_user', 'root'), ('mysql_password', 'ct980218'), ('mysql_host', 'localhost'), ('mysql_port', '3306')]
mysql_dict = dict(items)
print(mysql_dict['mysql_name']) # mobile_version_1
print(type(mysql_dict['mysql_name']))
print(type(mysql_dict['mysql_port']))
若内容需要为int类型或者bool类型可以参考我的方案
import configparser
cf = configparser.ConfigParser()
cf.read('C:/Bioecare/mobile_version/config.ini')
MYSQL_ITEMS = cf.items('Mysql')
MYSQL_DICT = dict(MYSQL_ITEMS)
MYSQL_NAME = MYSQL_DICT['mysql_name']
MYSQL_USER = MYSQL_DICT['mysql_user']
MYSQL_PASSWORD = MYSQL_DICT['mysql_password']
MYSQL_HOST = MYSQL_DICT['mysql_host']
MYSQL_PORT = MYSQL_DICT['mysql_port']
SETTING_ITEMS = cf.items('Setting')
SETTING_DICT = dict(SETTING_ITEMS)
SETTING_STATIC_ROOT = SETTING_DICT['static_root']
SETTING_DEBUG = SETTING_DICT['debug']
b = bool(SETTING_DEBUG)
// 分割一下**************
import configparser
cf = configparser.ConfigParser()
cf.read('C:/Bioecare/mobile_version/config.ini')
MQTT_LIST = cf.items('Mqtt')
MQTT_DICT = dict(MQTT_LIST)
MQTT_HOST = MQTT_DICT['mqtt_host']
MQTT_PORT = int(MQTT_DICT['mqtt_port'])
这里建议写成绝对路径,否则打包过程中可能路径找不到
先生成.spec文件
在django的路径也就是含有manage.py文件的路径下

pyi-makespec -D manage.py
运行后会生成一个manage.spec文件

通常情况下,直接打包(你无法提前预知缺少的module)
直接执行以下语句
pyinstaller manage.spec
之后django项目文件夹下会多出disk文件夹和build文件夹,重要的exe信息在dist中

运行exe
运行首先要到dist中间中依次进入最后默认文件名manage.exe文件,双击无作用出现一系列提示,因为双击相当于运行python manage.py 但我们运行django需要python manage.py runserver 所以按住键盘shift在文件空白处按鼠标右键会出现在此处打开命令窗口.执行程序

manage,exe runerver
将会报错,ImportError: No module named admin。一般都是缺少module,之后可参考我上面前言中参考的文档进行修改
在.spec文件加需要的module。

经过本人多次打包django2.0发现一般
‘pkg_resources.py2_warn’
经常缺少!

然后删掉disk文件和build文件重新打包,不要删manage.spec!

重新
pyinstaller manage.spec
进入manage文件夹
manage,exe runerver
发现app的urls需要添加,因此我们提前将所有app的urls添加进入


重新打包。。。。


temperature没进入
将文件放入就好了

前言中的链接大致和其他博客类似,但有一篇博客用django1.11,具体有点遗忘,如创建ini文件等,本人尝试失败,告知下大家。前言发布链接为正解。
将exe文件写入bat
在exe文件夹下创建一个bat文件,如:manage.bat
写入内容
@echo off
cd C:\Users\win7_anywhere32\Desktop\111\manage
manage.exe runserver
@ echo off 双击运行.bat文件不显示manage.exe runserver这条命令
进入路径 在虚拟机中测试,所以文件名有点随意
运行指令 manage.exe runserver
注意: 该文件写成绝对路径形式, 本人一开始没加路径cd C:\Users\win7_anywhere32\Desktop\111\manage\相当于在一开始的路径中(按下win+r 输入cmd 一开始显示的路径)运行。若需写相对路径请大家自己寻找参考资料,本人目前找了很多,没有成功过。找到望联系本人,留言即可.
写.vbs文件
首先创建一个文件如 start.vbs文件
输入
CreateObject(“WScript.Shell”).Run"C:\Users\win7_anywhere32\Desktop\111\manage\manage.bat",0
注意大小写,不能错。 最后的0代表开机不会显示cmd窗口,若在测试阶段可改为1查看具体问题
放入win启动文件中
按下win+r , 输入
shell:startup
进入C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup文件夹下
将start.vbs文件放入。电脑重启查看。完成。
本文介绍了如何将Django2.0项目打包为exe文件,并在Windows环境下设置开机自启动。包括使用pyinstaller创建.spec文件,处理缺少模块的问题,创建bat和vbs文件以实现自动运行及隐藏命令窗口,最后将vbs文件放入启动目录实现开机启动。

1万+

被折叠的 条评论
为什么被折叠?



