Django框架14 /pyinstaller打包django项目成exe文件
1、环境
-
环境
win10 + Python3.6 + Django (2.1.10) + PyInstaller (3.5)
-
PyInstaller安装
# 方式一:在线安装 pip install pyinstaller # 方式二:离线安装 PYPI下载离线包 future-0.18.2.tar.gz pefile-2019.4.18.tar.gz altgraph-0.17-py2.py3-none-any.whl pywin32_ctypes-0.2.0-py2.py3-none-any.whl pyinstaller-4.0.tar.gz
2、制作项目的.spec文件
-
进入到项目的所在的路径中,执行如下命令生成 .spec文件,文件位于当前路径下
pyi-makespec -D manage.py
-
manage.spec文件 示例
# -*- mode: python ; coding: utf-8 -*- block_cipher = None a = Analysis(['manage.py'], pathex=['F:\Work\Code\project_1'], binaries=[], datas=[], hiddenimports=[], 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')
3、生成exe文件
-
运行如下命令,生成打包的exe文件
pyinstaller manage.spec
-
打包程序的运行方式
# 在manage.exe的位置打开cmd,输入如下命令,运行服务即可 manage.exe runserver
4、总结
-
问题1:运行服务是会提示No module named XXX
这是因为Django有些module不会自动收集,需要手动添加 解决方法:在manage.spec文件中修改hiddenimports=[]为hiddenimports=['users','users.apps','sql_server.pyodbc.compiler'],提示缺少什么module就在此处添加什么。
-
问题2:打开网页出现TemplateDoesNotExist 错误
解决方法:根据错误的提示消息,把项目中的模板文件templates拷贝到相应的位置,刷新页面即可。
-
问题3:网页丢失CSS、JS
1、首先在项目中的settings文件中添加如下代码,其中static是项目中的静态文件位置,static_root是static下的一个空文件夹,然后执行python manage.py collectstatic命令将静态文件收录到static_root中
STATIC_ROOT = os.path.join(BASE_DIR, 'static', 'static_root')
2、然后在urls.py中添加如下代码:
from django.conf.urls import static from project_1 import settings urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)