python django 项目打包成 exe 文件
python django 项目打包成 exe 文件
步骤一:
安装pyinstaller
pip install pyinstaller
步骤二:
前往django 项目路径下,也就是含有manage.py文件的路径下,生成.spec文件
pyi-makespec -D manage.py
第三步:
通常情况下,直接打包(你无法提前预知缺少的module) 直接执行以下语句
pyinstaller manage.spec
第四步:
运行首先要到dist中间中依次进入最后默认文件名manage.exe文件,双击无作用出现一系列提示,因为双击相当于运行python manage.py 但我们运行django需要python manage.py runserver 所以按住键盘shift在文件空白处按鼠标右键会出现在此处打开命令窗口.执行程序
.\manage.exe runerver 0.0.0.0:80
第五步:
修改 manage.spec 文件
hiddenimports=['<app>.urls','django_windows_tools'],
eg:
a = Analysis(['manage.py'],
pathex=['C:\\Users\\jianmin.cui\\Desktop\\script\\python\\project\\configurationManagement'],
binaries=[],
datas=[(r'C:\Users\jianmin.cui\Desktop\script\python\project\configurationManagement\webManagement\static_root',r'.\webManagement\static_root'), (r'C:\Users\jianmin.cui\Desktop\script\python\project\configurationManagement\webManagement\templates', r'.\webManagement\templates')],
hiddenimports=['webManagement.urls','django_windows_tools'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['manage.py'],
pathex=['C:\\Users\\jianmin.cui\\Desktop\\script\\python\\project\\configurationManagement'],
binaries=[],
datas=[(r'C:\Users\jianmin.cui\Desktop\script\python\project\configurationManagement\webManagement\static_root',r'.\webManagement\static_root'), (r'C:\Users\jianmin.cui\Desktop\script\python\project\configurationManagement\webManagement\templates', r'.\webManagement\templates')],
hiddenimports=['webManagement.urls','django_windows_tools','django.contrib.admin.apps','django.contrib.auth.apps','django.contrib.contenttypes.apps','django.contrib.sessions.apps','django.contrib.messages.apps', 'django.contrib.staticfiles.apps'],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='manage',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='manage')
第六步:
删除dist目录,重复第三步、第四步、第五步 当不提示:ImportError: No module named时,就打包成功了。
补充:
step1:
settirngs.py文件中加入
STATIC_ROOT = os.path.join(BASE_DIR, 'webManagement', 'static_root')
step2:
收集静态资源
python manage.py collectstatic
step3:
在项目urls.py中导入static库
from . import settings
...
...
...
urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
step4:
manage.spec中添加元组保证能找到该静态资源
datas=[(r'C:\Users\jianmin.cui\Desktop\script\python\project\configurationManagement\webManagement\static_root',r'.\webManagement\static_root'), (r'C:\Users\jianmin.cui\Desktop\script\python\project\configurationManagement\webManagement\templates', r'.\webManagement\templates')],
第七步:
.\manage.exe runerver 0.0.0.0:80
进入web页面,缺什么补什么目录。一般把app的templates目录拖到指定位置即可。
例如webManagement/templates/webManagement 这个目录移动到 dist/manage/django/contrib/admin/templates/
第八步:
写bat文件
vim webmanage.bat
@echo off chcp 65001 .\manage.exe runserver 0.0.0.0:9998
第九步:
bat 转 exe
使用bat to exe converter软件进行转换
补充说明:
pyinstall 有坑
排坑指南 https://blog.csdn.net/u012324798/article/details/106837646/

浙公网安备 33010602011771号