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/

 

posted @ 2020-08-25 13:30  cuigelasi  阅读(770)  评论(1)    收藏  举报