【集成部署打包】vue3+django集成部署打包成exe 文件
文章目录
- [【集成部署打包】vue3+django集成部署打包成exe 文件](#【集成部署打包】vue3+django集成部署打包成exe 文件)
-
- [1. vue 打包部署配置](#1. vue 打包部署配置)
- [2. django 打包部署配置](#2. django 打包部署配置)
- [3. 打包操作](#3. 打包操作)
- 总结
1. vue 打包部署配置
js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from "path"
// https://vite.dev/config/
export default defineConfig({
plugins: [
vue()
],
resolve: {
alias: {
"@": path.resolve("./src")
}
},
// 将打包存放到web目录下,并且将所有的静态文件打包到static目录中
build: {
outDir: 'web',
assetsDir:'static'
}
})
npm run build
打包后的如上图所示,将打包后的文件全部拖进django项目中
2. django 打包部署配置
项目中setting.py 文件中
python
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'web')], # 配置模板查找路径
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
python
# 静态资源url访问的前缀
STATIC_URL = 'static/'
# 静态文件在开发过程中的查找目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "web/static"),
]
# 收集静态文件后的存放目录
STATIC_ROOT = BASE_DIR / "staticfiles"
项目中 urls.py
python
from django.urls import path,include,re_path
from django.views.generic import TemplateView
urlpatterns = [
path('', TemplateView.as_view(template_name='index.html'), name='index'),
re_path(r'^.*/$', TemplateView.as_view(template_name='index.html')),
]
3. 打包操作
- 安装 pyinstaller (在终端运行)
undefined
pip install pyinstaller
- 生成spec文件(在终端运行)
undefined
pyi-makespec -D manage.py
hiddenimports 刚开始是没有的,就是每次打包的时候都会出错,提示no module named xxx,这个xxx就是需要我们添加到hiddenimports列表里面的东西
。用django写的项目的话,拿必然会用到的是以下5个,后面打包的过程中,如果还有需要隐藏的可再次手动添加。【主要根据报错进行添加,直到没有出现模块相关的报错】
'xxx.apps','rest_framework.authentication','rest_framework.permissions','rest_framework.parsers','rest_framework.negotiation','rest_framework.metadata'
下面是我的 manage.spec 配置
python
# -*- mode: python ; coding: utf-8 -*-
a = Analysis(
['manage.py'],
pathex=[],
binaries=[],
datas=[],
hiddenimports=['issue.apps','issue.urls','rest_framework.authentication','rest_framework.permissions','rest_framework.parsers','rest_framework.negotiation','rest_framework.metadata'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
)
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='manage',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
coll = COLLECT(
exe,
a.binaries,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='manage',
)
-
manage.spec 配置好后,开始打包
pyinstaller manage.spec
打包生成dist(包在这)与build(临时文件, 没什么用),win+R输入 cmd进入终端到达 dist\manage目录下 ;输入manage.exe runserver --noreload 启动 exe
manage.exe runserver --noreload
注意:
如果出现如下的报错,表示找不到静态文件,将静态文件直接拖进 dist/manage/_internal 目录下即可解决问题
总结
以上就是今天要讲的内容,希望对大家有所帮助!!!