python之pyinstaller组件打包命令和异常解析实战

项目场景:

Python版本:3.8

因公司业务需求,须开发一套局域网内视频会议软件,此次采用Python实现此功能。
程序编写完并在编译器实现此功能后,采用pyinstaller组件打包成应用程序

问题描述:

在使用pyinstaller组件打包过程中,着实遇到一些问题,以下列出此次遇到主要的问题:

1.如何打包多个文件?

2.打包完运行后控制台显示"找不到指定模块。mkl_intel_thread.l.dll",图示如下:

3.打包如何排除不需要的组件以减少包的大小?

4.待补充 (≧◠◡◠≦)✌

原因分析:

本次打包组件均由conda install安装,在编译器中opencv引用模块运行项目是没问题的,只是打包运行就会报Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.l.dll,缺少MKL文件 ,疑惑了一段时间…( @_@; )

解决方案:

首先呢,当然是找百度大神来解决问题啦 (๑•̀ㅂ•́)و✧,寻寻觅觅,无果,但至少让我理解了一点打包的过程和注意事项,结合过去代码经验,这次把Anaconda的opencv、numpy和mkl模块都给卸了,代码如下:

conda uninstall opencv
conda uninstall numpy
conda uninstall mkl

然后改成如下:

pip install mkl
pip install numpy
pip install opencv

以上最好按顺序安装,三个组件有相互依赖关系,安装完发现部署后不再报错。

在安装过程中也发现了两个安装方式安装的组件其实不太相同,从包的大小得知,pip install安装的包应该是比较完整的,所以pyinstaller打包起来不会导致文件丢失。

这里就解决了问题2啦(把最难的先给解决啦~ (  ̄ー ̄)人(^▽^ ))

接下来说明一下如何打包多文件。

首先要打包多文件,先生成一个spec文件,代码如下:

pyi-makespec app.py

这行代码会生成一个app.spec文件在当前目录下。

生成的app.spec的内容如下:

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

block_cipher = None

#如果要添加打包文件,在这里添加
a = Analysis(['app.py'], #例:['app.py','app1.py','app2.py']
             pathex=['C:\\yourAppDir'], #打包路径,一般默认为当前文件夹路径
             binaries=[],
             # 打包静态资源,这边为元祖类型
             datas=[], # 例:[('C\\yourAppDir\\images','images'),('C\\yourAppDir\\videos','videos')]
             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,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          #生成的执行文件名
          name='MyAwesomeApp', #生成 MyAwesomeApp.exe
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          #运行时是否显示控制台,注意True和False的首字母都要大写
          console=True)

以下为打包常用命令:

常用:
-i  给应用程序添加图标
-F	指定打包后只生成一个exe格式的文件
-D	–onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项)
-c	–console, –nowindowed 使用控制台,无界面(默认)
-w	–windowed, –noconsole 使用窗口,无控制台
-p  添加搜索路径

这边我用的是:

pyinstaller -F app.spec

过了一会儿打包完成后会在当前目录生成三个文件夹,如下图所示:

_pycache_文件夹缓存你打包的文件。(如果组件有重新安装,打包时建议删了再进行打包)

bulid文件夹保存一些关于打包文件的信息。

dist文件保存打包完生成的.exe文件。

以上,问题1结束啦,接下来最后一个问题3咯~ ( ̄▽ ̄)~■干杯□~( ̄▽ ̄)

记得第一次打包的时候,很纳闷,为啥写一点代码打包起来要100多MB? ㄟ( ▔, ▔ )ㄏ

首先依然百度一下,你就…还是不知道 (ˉ▽ ̄~) 切~~

还是靠自己啦,最后打开编译器看一下环境,陡然发现环境多了很多不需要的组件。

如果怕麻烦一个一个conda uninstall的话,建议新建一个干净的python3环境,再安装自己需要的组件。

(当前Python环境建议新建一个在项目当前目录下,为当前项目专用环境,初始化只有两个基本组件,再安装requirement.txt文件中的组件就可以了)

这样打包起来你就会发现包小了很多。

终于写完啦 o(*≧▽≦)ツ┏━┓ 开熏

锦瑟无端五十弦,一弦一柱思华年

到此这篇关于python之pyinstaller组件打包命令和异常解析实战的文章就介绍到这了,更多相关python pyinstaller内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 详解python第三方库的安装、PyInstaller库、random库

    python第三方库的安装 PyInstaller库 PyInstaller库能够在不同操作系统下将python源文件打包,变成直接可运行的可执行文件. 可以通过-F参数对python源文件生成一个独立的可执行文件. PyInstaller -F SnowView.py 执行后在dist目录中出现了SnowView.exe可执行文件. random库 使用random库来生成随机数 最基本 random.random() 生成一个0~1之间的随机小数 from random import * p

  • python3.9实现pyinstaller打包python文件成exe

    简述 1.python python作为一门解释型脚本语言,它有三种发布方式: 文件 : 源码文件,运行需要使用者安装Python环境并且安装依赖的各种库 pyc文件:pyc文件是Python解释器可以识别的二进制码,可跨平台的,需要使用者安装相应版本的Python和依赖库. 可执行文件:不需要安装python环境和依赖库,可针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,-) 2.pyInstaller PyInstaller工具可以把python解析器和脚本打包成一

  • python 利用Pyinstaller打包Web项目

    最近需要用python打包一个单页面网页demo,于是准备用python包pyinstaller来打包程序.网上搜索了一下,大部分教程都是打包非web项目,这里分享一下打包简单网页demo的过程. 系统环境:win10+python3.6 一.安装pyinstaller pip install pyinstaller 二.打包项目 1.如果是单文件项目,pyinstaller可以通过简单的命令进行python代码的打包工作,其命令为: pyinstaller -option ***.py 1.1

  • 如何利用pyinstaller打包Python程序为exe可执行文件

    序 对于如何将py文件打包生成exe可执行文件最简单的应该我觉得就是使用pyinstaller第三方模块 下面我就分为三个步骤给大家讲解如何使用 并分享一点小技巧 下面直接进入分享啦 安装pyinstaller第三方库 既然要安装第三方库,当然离不了pip install啦 直接使用pip install pyinstaller就可以安装啦 (不过这样似乎遇到第三方模块比较大的话就很慢甚至无法成功安装啦 ) 安装第三方库的小技巧 当然有解决办法呀 那就是使用国内镜像源 添加后就像是开挂了的 pi

  • 教你使用pyinstaller打包Python教程

    一.单个文件打包 1.1 简单打包 例如现在有一个main.py文件内容如下 import os print("hello world") os.system("pause") 运行结果如图 现在用一下命令打包成一个可执行文件pyinstaller -F main.py 再同级目录下生成一个dist文件夹里面就会生成一个可执行文件,双击就可以执行 1.2 带图标打包 有的时候为了美观,可以给可执行文件加一个图标,这时用这个命令pyinstaller -F main.

  • python之pyinstaller组件打包命令和异常解析实战

    项目场景: Python版本:3.8 因公司业务需求,须开发一套局域网内视频会议软件,此次采用Python实现此功能. 程序编写完并在编译器实现此功能后,采用pyinstaller组件打包成应用程序 问题描述: 在使用pyinstaller组件打包过程中,着实遇到一些问题,以下列出此次遇到主要的问题: 1.如何打包多个文件? 2.打包完运行后控制台显示"找不到指定模块.mkl_intel_thread.l.dll",图示如下: 3.打包如何排除不需要的组件以减少包的大小? 4.待补充

  • python使用Pyinstaller如何打包整个项目

    目录 使用Pyinstaller打包整个项目 1 .安装Pyinstaller 2. 打开命令窗口 3. 生成 spec文件 4. 打开生成的spec文件 5. 执行spec文件,在命令行输入 6.生成中出现的问题 使用pyinstaller打包pytorch踩的那些坑 问题1:单个文件打包还是文件夹打包? 问题2:一起打包的数据文件找不到? 问题3:GPU训练的模型要放到CPU环境跑? 问题4:直接打包还是用spec文件配置? 总结 使用Pyinstaller打包整个项目 今天真的被Pyins

  • Python中最好用的命令行参数解析工具(argparse)

    Python 做为一个脚本语言,可以很方便地写各种工具.当你在服务端要运行一个工具或服务时,输入参数似乎是一种硬需(当然你也可以通过配置文件来实现). 如果要以命令行执行,那你需要解析一个命令行参数解析的模块来帮你做这个苦力活. Python 本身就提供了三个命令行参数解析模块,我这里罗列一下它们的大致情况供你了解. getopt,只能简单的处理命令行参数 optparse,功能强大,易于使用,可以方便地生成标准的.符合Unix/Posix 规范的命令行说明. argparse,使其更加容易的编

  • Python中用pyinstaller打包时的图标问题及解决方法

    前言 因为昨天重新研究了下python的打包方法,今天一番准备把之前写的一个pdf合并软件重新整理一下,打包出来. 但在打包的过程中仍然遇到了一些问题,半年前一番做打包的时候也遇到了一些问题,现在来看,解决这些问题思路清晰多了,这里记录下. 问题 打包成功,但运行时提示Failed to execute script xxx.这里又分很多种原因,这时不要用-w打包,然后在终端.\xxx.exe的方式运行,就可以看到输出日志了. 原因一 D:\02-python\2019-09-30_pdf_op

  • Python使用pyinstaller打包含有gettext locales语言环境的项目(推荐)

    问题 如何使用 pyinstaller 打包使用了 gettext 本地化的项目,最终只生成一个 exe 文件 起因 最近在用 pyhton 做一个图片处理的小工具,顺便接触了一下 gettext,用来实现本地化化中英文转换.项目主要结构如下: . |--src # 源码 | |--package1 | |--package2 | |--locales # 本地化文件 | | |--en # 英文 | | | |--LC_MESSAGES | | | |--en.mo | | |--zh # 中

  • Pyinstaller+Pipenv打包Python文件的实现示例

    目录 安装pipnev 前期准备 创建虚拟环境 进入虚拟环境 安装项目用到的库 使用pyinstaller打包 相信大家都试过将Python文件进行打包,来发给其他没有安装Python环境的用户使用,但通常情况下,打包生成的exe文件都很大,而产生这种情况的原因就是,打包并不会只打包我们所使用的一些库,在我们日常使用的环境中,可能会有很多没有用的关联库被一起打包.这时,创建一个虚拟环境就是最好的选择,然后在虚拟环境中进行打包. 安装pipnev pipenv 用来管理虚拟环境,先安装一下 pip

  • 如何对Python编译PyInstaller打包生成的exe文件进行反编译生成pyc、py源代码文件

    目录 准备工作 根据exe生成pyc文件 根据pyc文件反编译为py文件 参考 总结 准备工作 没有加壳的python编译并打包的exe文件 python反打包代码(不知道这样叫是否合理):python-exe-unpacker 16进制编辑查看器 :Hex Editor Neo 反编译库 :uncompyle6 根据exe生成pyc文件 下载并解压缩 python-exe-unpacker 代码,myfile.exe为需要反编译的exe文件 使用python运行 python-exe-unpa

  • python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警

       使用Windows的wmic命令,获取可执行文件的运行状况.文件路径.PID,如果可执行文件挂掉,就重启并邮件告警. 因为监控的可执行文件的文件名一样,不好区分,所以我使用文件的绝对路径为标准来判断是否正常运行,代码及详细解释如下: # -*- coding: utf-8 -*- import os import win32api import smtplib from email.mime.text import MIMEText def get_pidWay(file_name): e

  • Python中.py文件打包成exe可执行文件详解

    前言 最近做了几个简单的爬虫python程序,于是就想做个窗口看看效果. 首先是,窗口的话,以前没怎么接触过,就先考虑用Qt制作简单的ui.这里用前面sinanews的爬虫脚本为例,制作一个获取当天sina头条新闻的窗口. 生成py文件后,运行该py文件,这里窗口我只是随便拖了几个组件进去,主要的text browser用于显示获取到的sinanews. 首先贴一下我的配置 官方下载: Python 3.3.3 PyQt5-5.2.1 for Py3.3(当安装完Python3.3后,安装对应P

随机推荐