Python——第三方扩展库 之 使用Pyinstaller 模块实现【Python代码打包成系统可执行文件】

Python——Pyinstaller 模块

可执行文件:指的是可以由操作系统进行加载执行的文件。在不同的操作系统环境下,可执行程序的呈现方式不一样,这类文件可以单独运行,在windows操作系统下,可执行程序可以是 .exe文件 .sys文件 .com等类型文件

基本介绍:Pyinstaller为一种命令行工具,不需要进入Python程序中编写代码,只需要打开cmd命令窗口,输入简短的指令即可实现功能

Pyinstaller 模块的作用:Pyinstaller可以将Python程序以及所有的依赖库打包成为各种平台上的可执行文件,可以使Python程序脱离解析器运行,能防止源代码泄漏(打包的时候已经把解析器给封装进去了)

使用方式:由于要将路径指引到Python文件所在的路径下,于是可以在要被转化为可执行文件的Python程序文件(扩展名为.py)的所在位置的空白区域,同时摁住鼠标右键和shift键,会弹出对话框,选择"在此处打开Powershell(cmd)窗口",就会弹出cmd命令窗口,这样就会自动锁定文件所在的路径,接下来就可以运行下面的代码,实现.exe可执行文件的转化

pyinstaller -F 要被转化为可执行文件的Python程序的文件名 	#比如文件为amazing.py,则填入amazing.py,注意扩展名也要写入

对应该Python程序生成的可执行文件就在dist(distribute)文件夹中

进行打包的同时可以指定生成的可执行文件的图标

pyinstaller -i 作为图标的图片文件名 -F 要被转化为可执行文件的Python程序的文件名	#要将图标文件和.py文件放在同一个目录下,尽量都使用 英文 进行文件命名

进行打包的同时可以指定生成的可执行文件的文件名(缺省即为.py文件的名称)

pyinstaller -F 要被转化为可执行文件的Python程序的文件名 -n 要修改成的文件名

进行打包的同时可以指定输出的文件路径

pyinstaller -F 要被转化为可执行文件的Python程序的文件名 --distpath 指定的路径	#注意--distpath中具有两个-,命令不要打错了

假如程序逻辑中需要依赖一些文件,但pyinstaller并不会将自动把这些文件帮你打包进去,比如,一个第三方库中有一段程序需要去使用public.xml文件,当打包完成后,这个文件是不会自动打包进去的
pyinstaller为我们提供了参数配置文件,也就是上面成功打包指定.py文件后生成的.spec文件,我们只需要在==.spec文件的datas==中配置需要打包的文件路径即可。例如下面这个datas的修改表示的是将public.xml文件打包到androguard\core\resources目录下

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

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

pyinstaller -D xxx.spec 

对于图形界面的应用,进行打包的同时可以指定可执行文件运行时不出现shell小黑框

pyinstaller -w (-w就是取消shell窗口的显示)

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的名字

有的时候可能在运行过程中会出现这种错误:
无法将“pyinstaller”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次
此时的解决方法:

1.查看是否下载了pyinstaller包

如果没有,请使用该命令进行pyinstaller第三方扩展库的下载:

pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple 

2.查看已下载的第三方扩展库所在路径,找到一个名称为Scripts的文件夹

如果是使用VS的同学,大概率按照下面这个路径继续往下找会碰到这个Scripts文件夹(因为我自己的文件夹的路径是C:\Users\Administrator\AppData\Local\Programs\Python\Python39下面):
C:\Users\Administrator\AppData\Local\Programs\Python

如果是使用Pycharm的同学,可以先在Pycharm进入这个界面,先查看已下载的第三方扩展库所在路径,接着根据这个路径去找,大概率也可以遇到这个Scripts文件夹
在这里插入图片描述

值得注意的一点是这个AppData文件夹默认是隐藏掉的,需要进行一下操作来进行显示
在这里插入图片描述

3.复制Scripts路径,并添加环境变量

在Windows 上添加全局环境变量的步骤:
1 搜索并选择"系统"(“控制面板”)
2 单击"高级系统设置"链接,然后单击"环境变量"
3 选择Path,点击编辑,窗口中输入环境变量的值(即Scripts路径),然后单击"确定"即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后,可能有同学需要在运行可执行文件的过程中,Shell窗口停留一阵子,同时发现在运行我们Pyinstaller 模块生成的可执行文件的过程中,发现Shell窗口一闪而过了,这个时候可以在Python代码的最后添加上os.system(‘pause’)(需要先导入os标准库),再去生成可执行文件,即可实现Shell窗口停留的功能

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值