如何使用pyinstaller打包文件,pyinstaller打包exe缺少运行库

  如何使用pyinstaller打包文件,pyinstaller打包exe缺少运行库

  本文主要介绍pyinstaller打包exe程序的步骤以及添加依赖文件的实现,具有很好的参考价值。希望对你有帮助。如有错误或不足之处,请不吝赐教。

  00-1010pyinstaller打包exe程序并添加依赖文件1、安装pyinstaller库2、pyinstaller的打包机制3、打包命令4、在引导包外添加一些依赖文件5、打包by。spec方法6,以及pyinstaller的常用参数PyInstall在打包时的依赖问题。

  

目录

  也许我们不是专业的程,但是我们可以用python来提高我们的工作效率,减少加班,让代码替我们做一些重复性的工作,省去了和一个女生见面,牵手的时间。

  话不多说,马上进入这个pyinstaller打包工具知识分享。隔壁女朋友小东约我一会一起吃饭。

  

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

  在命令行输入以下命令,如图:我已经安装好了:

  安装pyinstaller

  

1、安装pyinstaller库

  没有Python解释器,python脚本无法运行。在将脚本打包成exe可执行文件时,pyinstaller会将python解释器和脚本打包在一起,同时会将需要用到的第三方库和依赖包一起驱动到exe文件中。这里我以最近写的一个打包工具为例,简单描述一下我的打包过程。

  

2、pyinstaller的打包机制

  pyinstaller-F [main.py]

  此命令是指将main.py作为主程序的脚本打包到一个exe文件中。-F参数表示包被覆盖,无论键入多少次,包都将是最新的。可以选择cmd命令行来操作,也可以使用pycharm的终端端口。我使用终端。如图所示。

  运行之后,您将看到build、dist和。已生成等级库文件。dist中的exe文件是刚刚生成的可执行文件,这样简单快捷的打包就完成了。

  

3、打包命令

  在步骤3的情况下,不需要依赖程序中的外部文件。如果程序逻辑需要依赖一些文件,pyinstaller不会自动为你打包这些文件。例如,第三方库中有一个程序需要使用public.xml文件。打包完成后,该文件不会自动打包。我该怎么办?

  不用担心,pyinstaller为我们提供了参数配置文件,也就是刚刚生成的。规格文件。我们只需要配置要打包成数据的文件,例如

  datas=[( d : \ \ python 3 . 6 . 5 \ \ Lib \ \ site-packages \ \ androguard\\core\\resources \ \ public . XML , andro guard \ \ core \ \ resources )

  将public.xml文件打包到androguard \ core \ resources目录中。

  请自行配置一些其他参数。如果pyinstaller有时候不需要打包一些不用的模块,可以在exclusions=[]中添加这个模块,比如exclusions=[XXX]。

  

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

  修改后,我们可以使用该命令重新打包。打包完成后,打开软件,发现所需的依赖文件已经打包成功,相关功能正常。

  pyinstaller -D xxx.spec

  

5、.spec方式打包

  此外,

  骚强也是整理了一下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)

  

  

  • -oDIR, --out=DIR

  

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

  

  

  • -nNAME, --name=NAME

  

optionalnameto 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】即可。

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: