python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > pyinstaller打包exe和添加依赖文件

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

作者:Spider.Li

这篇文章主要介绍了pyinstaller打包exe程序的步骤和添加依赖文件的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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的常用参数,有兴趣可以试一试哦,坑已经准备好了,各位勇士快来踩一踩

pyinstaller -c  xxxx.py
pyinstaller xxxx.py --console

pyinstall打包时的依赖问题

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

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

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

What to generate:

create a single file deployment

create a single directory deployment (default)

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.

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

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

您可能感兴趣的文章:
阅读全文