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并不会将⾃动把这些⽂件帮你打包进去,⽐如,⼀个第三⽅库中有⼀段程序需要去使⽤l⽂件,当打包完成后,这个⽂件是不会⾃动打包进去的,那该怎么办呢?
银行从业资格证书申请别急,pyinstaller为我们提供了参数配置⽂件,也就是刚刚⽣成的.spec⽂件,我们只需要再datas中配置需要打包的⽂件即可,⽐如
datas=[('D:\\python3.6.5\\Lib\\site-packages\\androguard\\core\\resources\\l','androguard\\core\\resources')
表⽰的是将l⽂件打包到androguard\core\resources⽬录下
其他的⼀些参数配置请⾃⾏百度,如有时需要让pyinstaller不打包某些⽤不到的模块,可通过在excludes=[]中添加此模块实现,如excludes=[‘xxx’]。
5、.spec⽅式打包
这样修改后我们就可以使⽤命令进⾏再次打包啦,打包完成后打开软件,发现需要⽤到依赖⽂件已经成功打包,相关功能就正常啦。
李易峰421事件是什么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=将的第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】即可。
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论