• Django框架14 /pyinstaller打包django项目成exe文件


    Django框架14 /pyinstaller打包django项目成exe文件

    1、环境

    • 环境

      win10 + Python3.6 + Django (2.1.10) + PyInstaller (3.5)
      
    • PyInstaller安装

      # 方式一:在线安装
      pip install pyinstaller
      
      # 方式二:离线安装 PYPI下载离线包
      future-0.18.2.tar.gz
      pefile-2019.4.18.tar.gz
      altgraph-0.17-py2.py3-none-any.whl
      pywin32_ctypes-0.2.0-py2.py3-none-any.whl
      pyinstaller-4.0.tar.gz
      

    2、制作项目的.spec文件

    • 进入到项目的所在的路径中,执行如下命令生成 .spec文件,文件位于当前路径下

      pyi-makespec -D manage.py
      
    • manage.spec文件 示例

      # -*- mode: python ; coding: utf-8 -*-
      block_cipher = None
      ​
      a = 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')
      

    3、生成exe文件

    • 运行如下命令,生成打包的exe文件

      pyinstaller manage.spec
      
    • 打包程序的运行方式

      # 在manage.exe的位置打开cmd,输入如下命令,运行服务即可
      manage.exe runserver
      

    4、总结

    • 问题1:运行服务是会提示No module named XXX

      这是因为Django有些module不会自动收集,需要手动添加
      解决方法:在manage.spec文件中修改hiddenimports=[]为hiddenimports=['users','users.apps','sql_server.pyodbc.compiler'],提示缺少什么module就在此处添加什么。
      
    • 问题2:打开网页出现TemplateDoesNotExist 错误

      解决方法:根据错误的提示消息,把项目中的模板文件templates拷贝到相应的位置,刷新页面即可。
      
    • 问题3:网页丢失CSS、JS

      1、首先在项目中的settings文件中添加如下代码,其中static是项目中的静态文件位置,static_root是static下的一个空文件夹,然后执行python manage.py collectstatic命令将静态文件收录到static_root中

      STATIC_ROOT = os.path.join(BASE_DIR, 'static', 'static_root')
      

      2、然后在urls.py中添加如下代码:

      from django.conf.urls import static
      from project_1 import settings
       
      urlpatterns += static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
      
  • 相关阅读:
    国王游戏
    选数
    双塔
    线段树
    树状数组及其他特别简单的扩展
    折半搜索
    VUE项目
    git_基本使用
    同源
    axios-使用
  • 原文地址:https://www.cnblogs.com/liubing8/p/13567271.html
Copyright © 2020-2023  润新知