1. 环境2. 制作项目的.spec文件
问题一: 运行服务是会提示No module named XXX问题二:打开网页出现TemplateDoesNotExist 错误问题三:网页丢失CSS、JS
环境为:win7 + Python3.6 + Django (2.1.10) + PyInstaller (3.5)
注意: 这里的PyInstaller,笔者是直接使用pip安装,中间会安装一些其他的插件
进入到项目的所在的路径中,执行如下命令生成 .spec文件,文件位于当前路径下
[Python]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | # -*- mode: python ; coding: utf-8 -*-block_cipher = Nonea = 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') |
然后运行如下命令,生成打包的exe文件
[Shell]
纯文本查看
复制代码
1 | pyinstaller manage.spec |
打包程序的运行方式: 在manage.exe的位置打开cmd,输入manage.exe runserver运行服务即可
到此就是打包程序的步骤,但是运行服务时会出现一些问题,对于笔者遇到的问题就在下面描述一下
这是因为Django有些module不会自动收集,需要手动添加
解决方法:在manage.spec文件中修改hiddenimports=[]为hiddenimports=['users','users.apps','sql_server.pyodbc.compiler'],提示缺少什么module就在此处添加什么。
解决方法:根据错误的提示消息,把项目中的模板文件templates拷贝到相应的位置,刷新页面即可。
参考的stackoverflow 网址:
https://github.com/pyinstaller/pyinstaller/issues/2368
首先在项目中的settings文件中添加如下代码,其中static是笔者项目中的静态文件位置,static_root是static下的一个空文件夹,然后执行python manage.py collectstatic命令将静态文件收录到static_root中:
[Shell]
纯文本查看
复制代码
1 | STATIC_ROOT = os.path.join(BASE_DIR, 'static', 'static_root') |
然后在urls.py中添加如下代码:
[Python]
纯文本查看
复制代码
1 2 3 4 | from django.conf.urls import staticfrom project_1 import settingsurlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) |
更多技术资讯可关注:itheimaGZ获取