DJANGO项目pyinstaller打包

DJANGO项目打包
这次是以python3版本
安装 打包工具

pip install pyinstaller

安装完后,在项目路径下,生成打包文件:manage.spec
在当前路径运行:

 pyi-makespec -D manage.py

生成后继续运行

pyinstaller -D -i xxx.ico manage.spec

-D:打包成多个文件
-p:指定python安装包路径
-i:指定图标,我的图标放在同目录下
mian.py:要打包的文件,和图标放在同目录下了
-D与-F一一对应,-F是打包成一个单独的文件。

运行完后打包的的文件当前路径:dist/manage
如果打包后运行报错:
在这里插入图片描述
说明少包了,把’corsheaders’加入到 hiddenimports=[‘corsheaders’],重新运行

pyinstaller -D -i xxx.ico manage.spec

下面是manage.spec文件内容

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None


a = Analysis(['manage.py'],
             pathex=['XXXX'],
             binaries=[],
             datas=[],
             hiddenimports=[,'corsheaders'],#这是缺少引用的包放到这
             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 )#弹不弹黑框:True弹/false不弹
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               upx_exclude=[],
               name='manage')

如果你项目里用多进程:multiprocessing
需要在mangage.py加这一句
multiprocessing.freeze_support()
如:

#!/usr/bin/env python
import os
import sys
import multiprocessing

def main():
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'TSDB.settings')
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)
if __name__ == '__main__':
    multiprocessing.freeze_support()
    main()

再打包成manage.spec

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值