1. 自行百度安装pyinstaller包。
2. 若项目中有css、js等等。在settings文件中加入以下代码。
STATIC_ROOT = os.path.join(BASE_DIR, 'static', 'static_root')
终端运行:
python manage.py collectstatic
在django项目路径下执行python manage.py collectstatic会自动地将STATICFILES_DIRS
列出的目录以及各个App下的static子目录的所有文件复制到STATIC_ROOT。
django项目urls中加入:
from django.conf.urls.static import static from django.conf import settings urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
此处是将STATIC_ROOT目录的静态文件复制一份到网页 STATIC_URL路径下。
3. 进入项目目录,shift+右键,在此处打开PowerShell窗口,输入命令pyinstaller -D manage.py
4. 修改manage.spec:
datas:里边加的是html文件,css、js等等文件。
hiddenimports:后边会说到。
5. 进入项目目录,shift+右键,在此处打开PowerShell窗口,输入命令pyinstaller manage.spec重新打包。
6. 此时项目目录下会生成一个dist的文件夹,进入dist在进入manage文件夹,shift+右键,在此处打开PowerShell窗口,输入mange.exe按tab runserver。
7.不报错则忽略,若报以下错误:
No module named XXX,这是因为Django有些module不会自动收集,需要手动添加。 解决方法:在manage.spec文件中修改hiddenimports=[]为hiddenimports=['users','users.apps','sql_server.pyodbc.compiler', '...', '...']
回到了第4步。
提示缺少什么module就在此处添加什么。(很恶心人的是每次只会提示一个错误,需要一直修改manage.spec文件,然后pyinstaller manage.spec重新打包)
8. 进入dist在进入manage文件夹,shift+右键,在此处打开PowerShell窗口,输入mange.exe按tab runserver。不报错则忽略,若报以下错误:
RuntimeError: Script runserver does not exist. [7964] Failed to execute script manage 解决方案:运行时加--noreload 开关。
即:manage.exe runserver 8000 --noreload
9. 进入dist在进入manage文件夹,shift+右键,在此处打开PowerShell窗口,输入mange.exe按tab runserver 8000 --noreload。
到此程序基本已经没问题,已经可以正常访问了。
10. 拓展:新建一个run.py文件。
import os os.system('manage.exe runserver 8000 --noreload') input()
在run.py文件路径下,shift+右键,在此处打开PowerShell窗口输入pyinstaller -F run.py 打包run.py
注:也可以加入图标run.ico:打包命令为:pyinstaller -F -i run.ico run.py
将dist文件夹下的run.exe文件移到到 manage.exe同一路径下。
下次双击运行run.exe 就能直接运行django项目了。
-------ending--------