Django2.0打包生成exe添加配置ini文件,在win10或7環境開機自啓動

前言

該文章是本人在實際項目中遇到的各種問題,供大家參考。

  1. 包含了如何將django項目打包生成exe可執行文件。
  2. 如何將該exe不在命令行使用如: manage.exe runserver,而是用bat代替
  3. 最後想開機自動啓動bat文件,用.vbs文件放入電腦開機自啓動環境。
  4. 該文章是本人第一次在csdn上寫,若有錯誤,請大家留言我會一一回復,感謝.
  5. 因爲是公司項目文件所以不上傳到github,抱歉
  6. 本人蔘考文獻
  7. django打包exe
  8. 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文件放入。電腦重啓查看。完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章