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文件放入。電腦重啓查看。完成。