django可以生成exe文件吗_把 Django 程序打包为 exe 可执行文件
功能背景
我把自動化校準程序寫好后,可以在 Pycharm 中運行 Django 程序。但是,這個程序最終要給檢定員用的,我不可能在每個檢定員的電腦上安裝 Django 編程環境讓他們使用。所以,要把 Django 打包成 exe 文件,在檢定員們的電腦上直接運行exe 文件。
網上搜索了一番之后,最終考慮用 Pyinstaller 工具打包,但是 Pyinstaller 并不能直接給 Django 程序打包。而是要有一些特定的配置。
Django程序大體的打包步驟,看這2篇文章即可(2篇文章內容基本一樣)。
另外需要補充的是:
1. setuptools 模塊降級
按照以上2篇文章中的步驟,我在運行到 manage.exe runserver 這個步驟時,報的第一個錯誤是: No module named 'pkg_resources.py2_warn' Failed to execute script pyi_rth_pkgres 這個缺失的模塊,并不是需要在 hiddenimports 列表中增加的,而是模塊 setuptools 的問題。把 setuptools 模塊降低到 44.0.0 及以下版本,即可解決此問題。
pip install setuptools==44.0.0 # 安裝指定版本的模塊,同時會卸載掉舊的模塊
setuptools模塊降級的這一步驟,要在執行所有的打包步驟之前進行。 如果在manage.exe runserver 執行后發現這一錯誤,而此時已經進行過打包步驟,則需要在把 setuptools 降級之后,刪除之前打包操作生成的所有文件,再重新執行一遍打包步驟。
2. hiddenimports 列表的處理
執行manage.exe runserver 報錯缺少模塊時,我當前的自動化程序,只報缺少 test_process.apps 這一個模塊。此時,hiddenimports=['test_process.apps'], 就可以了。
注意,報錯信息中模塊的名稱是什么,就把這個名稱的字符串,加到hiddenimports列表中。缺幾個模塊,就添加幾個模塊。
增加完 hiddenimports 后,不能直接運行 exe 文件,需要執行 pyinstaller manage.spec 重新打包。
如果已經進行過之前的打包步驟,生成了包文件,則必須刪除之前打包操作生成的所有文件,再重新執行修改后的manage.spec文件, pyinstaller manage.spec,生成exe 文件后再執行。
3. 創建一個 exe 可執行文件,來運行 manage.exe runserver 命令
在虛擬環境的 cmd 中運行 manage.exe runserver 后,此時可以在 Chrome 中正常運行校準程序了。但是,總不能讓檢定員們創建一個虛擬程序,然后敲入manage.exe runserver命令吧。比較好的方案應該是讓檢定員直接運行一個 exe。
我的思路是,再建立一個 .py 文件,在這 .py 文件中,執行 manage.exe runserver 命令,實現打開服務器的功能。用 Pyinstaller 把這個 .py 文件打包成 autotest.exe ,把 autotest.exe 放到 manage.exe 同一個文件夾中。檢定員們實際使用到的就是這個 autotest.exe。點擊 autotest.exe 之后,即相當于運行服務器。
autotest.exe 文件:
import os
os.system('manage.exe runserver')
input()
此外,打包時,可能還需要考慮電腦操作系統的環境,是 64 位還是 32 位,win7 還是 win10,最好在同一配置的電腦上打包,然后給相同配置的電腦使用。
總結
以上是生活随笔為你收集整理的django可以生成exe文件吗_把 Django 程序打包为 exe 可执行文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c# 定位内存快速增长_c#如何避免内存
- 下一篇: eval语法报错 ie10_IE10报如