pyinstaller打包exe程序的步骤和添加依赖文件的实现

目录
  • pyinstaller打包exe程序和添加依赖文件
    • 1、安装pyinstaller库
    • 2、pyinstaller的打包机制
    • 3、打包命令
    • 4、添加导包外的一些依赖文件
    • 5、.spec方式打包
    • 6、pyinstaller常用参数
  • pyinstall打包时的依赖问题

pyinstaller打包exe程序和添加依赖文件

或许我们并不是专业的程序猿,但是却可以通过python来提高我们的工作效率,减少加班时间,让代码替我们完成一些重复的工作,节省下来的时间去泡个妹子,牵牵小手不香吗

话不多说,马上进入本次pyinstaller打包工具知识分享,隔壁家小东女朋友叫我待会一起去吃饭呢。。。。。

1、安装pyinstaller库

命令行输入以下命令,如图显示是我已经装过了:

pip install pyinstaller

2、pyinstaller的打包机制

python脚本的运行离不开python解释器,把脚本打包成exe可执行文件时,pyinstaller会将python解释器和脚本一起打包,同时把需要用到的第三方库和依赖包一并打入到exe文件中,下面我就以最近写的一款装包工具为例,简述一下我的打包过程。

3、打包命令

pyinstaller-F [main.py]

这条命令指的是将以main.py为主程序的脚本打包为单独一个exe文件,-F参数表示覆盖打包,无论打多少次包都会是最新的。你可以选择cmd命令行进行操作,也可以使用pycharm的Terminal端口进行,我使用的是Terminal。如图。

运行完毕后,会看到build,dist,和.spec文件生成。dist里面的exe文件就是刚刚生成的可执行文件,这样简单快捷的打包就完成啦。

4、添加导包外的一些依赖文件

像第3步这种情况是程序中不需要依赖外部文件的,假如程序逻辑中需要依赖一些文件,但pyinstaller并不会将自动把这些文件帮你打包进去,比如,一个第三方库中有一段程序需要去使用public.xml文件,当打包完成后,这个文件是不会自动打包进去的,那该怎么办呢?

别急,pyinstaller为我们提供了参数配置文件,也就是刚刚生成的.spec文件,我们只需要再datas中配置需要打包的文件即可,比如

datas=[('D:\\python3.6.5\\Lib\\site-packages\\androguard\\core\\resources\\public.xml','androguard\\core\\resources')

表示的是将public.xml文件打包到androguard\core\resources目录下

其他的一些参数配置请自行百度,如有时需要让pyinstaller不打包某些用不到的模块,可通过在excludes=[]中添加此模块实现,如excludes=[‘xxx’]。

5、.spec方式打包

这样修改后我们就可以使用命令进行再次打包啦,打包完成后打开软件,发现需要用到依赖文件已经成功打包,相关功能就正常啦。

pyinstaller -D xxx.spec 

6、pyinstaller常用参数

另外,骚强也是整理了一下pyinstaller的常用参数,有兴趣可以试一试哦,坑已经准备好了,各位勇士快来踩一踩

  • -F, –onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用
  • -D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护
  • -K, –tk 在部署时包含 TCL/TK
  • -a, –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.
  • -d, –debug 产生debug版本的可执行文件
  • -w,–windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)
  • -c,–nowindowed,–console使用控制台子系统执行(默认)(只对Windows有效)
pyinstaller -c  xxxx.py
pyinstaller xxxx.py --console
  • -s,–strip 可执行文件和共享库将run through strip.注意Cygwin的strip往往使普通的win32 Dll无法使用.
  • -X, –upx 如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)(参见note)
  • -o DIR, –out=DIR 指定spec文件的生成目录,如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录.如果没有指定,而当前目录不是PyInstaller的根目录,则会输出到当前的目录下.
  • -p DIR, –path=DIR 设置导入路径(和使用PYTHONPATH效果相似).可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录.也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源
  • –icon= 将file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标  pyinstaller -i  ico路径 xxxxx.py
  • –icon= 将file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)
  • -v FILE, –version=FILE 将verfile作为可执行文件的版本资源(只对Windows系统有效)
  • -n NAME, –name=NAME 可选的项目(产生的spec的)名字.如果省略,第一个脚本的主文件名将作为spec的名字

pyinstall打包时的依赖问题

前几天写了一个人脸表情分析的小程序,想用pyinstall打包成一个可以移植的小软件。因为之前用过pyinstall,所以这次使用同样的方法对我的程序进行打包:

【pyinstaller -F --icon=图标.ico 要打包的文件.py --noconsole】

其中【-F】参数表示打包后生成单一的文件。pyinstall还有其他的一些参数可供选择:

What to generate:

  • -F, --onefile

create a single file deployment

  • -D, --onedir

create a single directory deployment (default)

  • -o DIR, --out=DIR

create the spec file in directory. If not specified, and the current directory is Installer’s root directory, an output subdirectory will be created. Otherwise the current directory is used.

  • -n NAME, --name=NAME

optional name to assign to the project (from which the spec file name is generated). If omitted, the basename of the (first) script is used.

但是当我使用之前同样的方法打包完成后,也生成了一个exe程序,双击执行的时候,什么也没有发生。在pycharm中运行良好的程序,到exe就什么都没有了,最恐怖的是连报错都没有!!

这时,可以使用【-C】参数,生成控制台版本的exe程序。这样会在【dist】文件夹下生成一个以程序命名的文件夹,在这个文件夹中会有这个exe程序。

我们在控制台下执行这个程序,如果程序无法正常执行的话,会输出错误信息:

看来我的错误是因为无法打开这个dat文件,我想起来我在程序中用到了这个数据文件,可能打包的时候,pyinstall没有吧这个需要的依赖文件装进exe程序中。

这时一种方法是吧这个dat文件拷贝进这个exe所在的文件夹中。

另一种方法就是修改【spec】文件。

打开spec文件,在datas参数里面添加依赖文件的路径

然后重新打包这个spec文件:【pyinstall from_video.spec】即可。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • PyInstaller如何打包依赖文件至目标程序目录

    目录 打包依赖文件至目标程序目录 问题 解决办法 pyinstaller打包exe有依赖文件 打包依赖文件至目标程序目录 问题 我使用 PySide2 开发了一个应用程序,为了方便其他人使用,我便使用 PyInstaller 打包成 *.exe.打包模式为 one-folder,即生成的目标文件是一个文件夹,里面包含了该 *.exe 文件及该 *.exe 所依赖的全部文件. 打开该文件夹,截图如下: 一切都很顺利,但是有这样一个问题,程序运行时依赖几个文件(*.png,*.txt),没有给我打包

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

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

  • 用python打包exe应用程序及PyInstaller安装方式

    目录 1.PyInstaller简介 2.PyInstaller安装 3. 准备需要的文件 4.使用Pyinstaller 5.参数的含义 6. 附圣诞树源文件 7. 源文件下载 1.PyInstaller简介 PyInstaller是一个跨平台的Python应用打包工具,支持 Windows/Linux/MacOS三大主流平台,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,从而允许最终用户在无需安装 Python 的情况下执行应用程序. PyInstaller 制

  • 使用PyInstaller 打包配置文件

    目录 PyInstaller打包配置文件 (一) 仅打包python文件 (二) 打包python文件与资源文件 pyinstaller打包后,配置文件无法正常读取问题 PyInstaller打包配置文件 在很多项目完成时,我们需要将python文件打包发布为一个exe应用程序,在python 中,打包就变得很简单了. 此文章仅介绍最简单的单个python文件打包,以及资源打包,后续复杂的,实践后再做更新. (一) 仅打包python文件 Step1. 安装 PyInstaller 第三方库.

  • 如何使用pyinstaller打包时引入自己编写的库

    目录 pyinstaller打包引入自己编写的库 场景 解决方案 使用第三方库pyinstaller pyinstaller打包引入自己编写的库 场景 使用pyinstaller打包某个文件后,生成的exe文件无法运行,提示 Module not found: myLib,myLib是我自己编写的一个库:封装了一些常用且重复的代码: from myLib.mysql import Mysql 解决方案 查找了一些资料后得到解决办法:在使用打包命令时使用额外参数 -p,参数值为myLib所在的路径

  • Pyinstaller打包工具的使用以及避坑

    目录 一.基本使用 二.基本错误处理 1.当运行exe后出现提示:No module named XXX 2.当运行出现报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 658: illegal multibyte 3.当运行出现这种报错:TemplateDoesNotExist at /index/ 4.项目缺少样式css和js 本篇博客主要介绍的是pyinstaller在windows下的基本使用和基础

  • pyinstaller打包exe程序的步骤和添加依赖文件的实现

    目录 pyinstaller打包exe程序和添加依赖文件 1.安装pyinstaller库 2.pyinstaller的打包机制 3.打包命令 4.添加导包外的一些依赖文件 5..spec方式打包 6.pyinstaller常用参数 pyinstall打包时的依赖问题 pyinstaller打包exe程序和添加依赖文件 或许我们并不是专业的程序猿,但是却可以通过python来提高我们的工作效率,减少加班时间,让代码替我们完成一些重复的工作,节省下来的时间去泡个妹子,牵牵小手不香吗 话不多说,马上

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

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

  • python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件

    本文介绍一个exe打包工具pyinstaller,使用非常简单.方便,而且还跨平台. 软硬件环境 Windows 10 64bit PyQt5 Anaconda with python 3.6.5 pyinstaller apscheduler sqlalchemy pyinstaller安装 命令行中执行 pip install pyinstaller pyinstaller打包exe 示例还是以之前的为例,解压进入工程目录,命令行执行打包命令 pyinstaller -F --distpat

  • 解决pyinstaller打包运行程序时出现缺少plotly库问题

    用pyinstaller打包tkinter程序,打包后运行exe是报如下错误: 搜索一阵发现是pyinstaller在打包的时候(StartRun.py我要打包的主程序文件)可能会漏掉一些三方库,就在打包的时候加上三方库的绝对路径: pyinstaller StartRun.py -F -p C:\Python36\Lib\site-packages 发现打包完之后还是会报以上问题,继续搜索后用添加hook文件的方式可以解决(彻底解决了我的问题),修改方法: 1.找到C:\Python36\Li

  • 基于Pyinstaller打包Python程序并压缩文件大小

    这段时间应老师的要求,给实验室写了一个基于 PyQt5 的小工具.然而源码发过去人家还不要,一定要打包成可执行软件. 那就打包呗,刚好以前对 Pyinstaller 有一点接触,就用了一下这玩意.这篇博文主要记录一下基本用法和踩得一些坑. 1. 用 Pyinstaller 打包 Python 程序 首先我们需要安装 Pyinstaller: pip install pyinstaller 用 conda 也行,不过貌似最近清华的 Anaconda 源被封了,也不知道什么时候解禁. Pyinsta

  • 解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题

    解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题 最近写一个小脚本,源代码200多行,引入了 openpyxl.requests库,写完打包exe之后居然有64MB的大小,真是奇了葩了.网上查找各位大神的做法,自己又动手填了N个坑之后,总算找到缩小exe文件的方法了,这种方法必须使用到pipenv,详细记录如下: 1.安装pipenv 就像安装其他python库一样,在cmd环境下安装: pip install pipenv 2.安装完成后,随便找一个盘符,在这个

  • 解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题

    我们用python 打包的exe文件的时候,每次运行后面都有一个黑框框,比如我的这个: 用tkinter做的图形界面,打包成exe文件,每次运行都先有黑色框框,我们一般电脑用的带有图形界面的软件都没有黑色框框, 所以可以取消掉黑色框框么,答案是肯定的. 在我们打包的时候:如果是直接指定python文件进行pyinstaller打包的话,需要添加--noconsole 例如:pyinstaller -F mycode.py --noconsole 还可以这样pyinstaller -F -w my

  • 使用pyinstaller打包PyQt4程序遇到的问题及解决方法

    python pyinstaller pyqt4 打包 QWindows 最近在做课设,用pyqt设计界面.然后用pyinstaller打包程序后,双击运行却总是闪退,后来将exe文件拖到cmd窗口运行,提示错误信息为 This application failed to start because it could not find or load the Qt platform plugin "windows". 废话不多说直接上解决办法. 进入你安装pyqt的路径,找到 ./pl

  • 解决pyinstaller打包exe文件出现命令窗口一闪而过的问题

    用pyinstaller打包的exe文件打开时,命令窗口一闪而过,并且未出现GUI界面,也看不到错误信息,然后去网上搜相关的信息,最多的两种说法: 1.添加raw_input()或者os.system("pause")等待信息 ,但是添加后依然是命令窗口一闪而过 2.在命令窗口打开exe,网上有两种打开exe的方法 start Path\Project.exe start加exe文件的绝对路径,但是效果和双击exe文件一样,依然是一闪而过 cd path >>Project

  • 使用pyinstaller打包.exe文件的详细教程

    为什么要打包? 1:当你想把你做的python游戏或者是脚本等.py文件发给别人时,打包为.exe文件,即使对方没有安装python也能运行 2:单纯想秀一下hhh 安装pyinstaller 安装pyinstaller很简单,直接cmd使用pip命令即可 pip install pyinstaller pyinstaller打包单个.py文件步骤 使用之前做的时钟为例进行演示 1:单击以下区域输入cmd切换到目标文件目录 2:输入pyinstaller -F -w Analog_clock.p

随机推荐