切换到工程目录,在工程目录的虚拟环境中安装Pyinstaller.
pip install pyinstaller
执行下面的命令,生成可执行文件的目录
pyinstaller -D manage.py
生成两个文件夹dist和build ,以及一个配置文件manage.spec。
其中要使用的可执行文件位于dist/manage/manage.exe
切换到exe文件所在目录,运行dos窗口。
manage.exe runserver
在windows系统上,运行exe文件不需要用python运行,以下是个错误的示例。
python manage.exe runserver
运行服务后,在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文件,拷贝到dist/manage目录下,刷新页面即可。
项目部署的时候,或者开发者模式下debug模式是关闭的,此时Django不会调用原来的static文件。
需要为静态资源文件指定一个根目录STATIC_ROOT
。
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)
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
pyinstaller manage.spec
python manage.py collectstatic
static
拷贝到dist/manage目录下。static
文件夹,人工把所有的静态资源文件拷贝过来。打包过程中,有些包会因为一些奇怪的因素,打不进来。
看一下打包流程,将打包失败的包,手动从虚拟环境中拷贝到dist/manage目录下。
对于一个工程文件,通常虚拟环境位于工程目录下的venv
文件夹下。
项目依赖的包存放在venv/Lib/site-packages
目录中。