pyinstaller打包django项目

发布时间:2024年01月19日

切换到工程目录,在工程目录的虚拟环境中安装Pyinstaller.

安装pyinstaller

pip install pyinstaller

打包

执行下面的命令,生成可执行文件的目录

pyinstaller -D manage.py

生成两个文件夹distbuild ,以及一个配置文件manage.spec
其中要使用的可执行文件位于dist/manage/manage.exe

运行

切换到exe文件所在目录,运行dos窗口。

manage.exe runserver

在windows系统上,运行exe文件不需要用python运行,以下是个错误的示例。

python manage.exe runserver

报错解决

缺模块 Modules

运行服务后,在cmd窗口可以看到缺失包的提示。
根据提示一一添加至manage.spec文件中的hiddenimports列表中:

hiddenimports=['my_app.apps','my_app.admin','my_app.models','my_app.urls','my_app.views']

所缺失的模块,基本都是自定义添加的app中的.py文件。
之后回到工程目录下,运行cmd窗口,使用下面的命令重新打包:

pyinstaller manage.spec

缺模板文件 Templates

将templates文件,拷贝到dist/manage目录下,刷新页面即可。

缺静态资源文件 Static

项目部署的时候,或者开发者模式下debug模式是关闭的,此时Django不会调用原来的static文件。
需要为静态资源文件指定一个根目录STATIC_ROOT

  1. 修改工程文件中的urls.py文件,给文件中添加静态文件根目录。
from django.contrib import admin
from django.urls import path
from django.conf.urls import static
from camera_pro import settings
urlpatterns = [
    path('admin/', admin.site.urls),
]
urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
  1. 配置settings.py文件中的根目录
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
  1. 回到工程目录下,运行cmd窗口,重新运行一次打包命令:
pyinstaller manage.spec
  1. 运行静态资源收集程序,将所有的静态资源文件拷贝在项目根目录下得static文件夹中
python manage.py collectstatic
  1. 将收集完整的静态资源文件夹static拷贝到dist/manage目录下。
  2. 如果清楚知道静态资源的位置,也可以跳过第4,5步,直接在dist/manage目录下创建一个static文件夹,人工把所有的静态资源文件拷贝过来。

缺包 site-packages

打包过程中,有些包会因为一些奇怪的因素,打不进来。
看一下打包流程,将打包失败的包,手动从虚拟环境中拷贝到dist/manage目录下。
对于一个工程文件,通常虚拟环境位于工程目录下的venv文件夹下。
项目依赖的包存放在venv/Lib/site-packages目录中。

完成

文章来源:https://blog.csdn.net/zhenxiaojie/article/details/135677675
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。