使用Pyinstaller转换.py文件为.exe可执行程序

使用Pyinstaller转换.py文件为.exe可执行程序

pyinstaller能够在Windows、Linux等操作系统下将Python脚本打包成可直接运行程序。使Python脚本可以在没有安装Python的环境中直接运行,方便共享。

  • 打开cmd命令行窗口,输入pip install pyinstaller,安装pyinstaller

  • 验证 pyinstaller --version

  • pyinstaller基本语法
-F,-onefile: 表示生成单个可执行文件,常用。
-w, -windowed, -noconsole:表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!
-p 表示你自己自定义需要加载的类路径,一般情况下用不到
-i 表示可执行文件的图标。注意:图片后缀必须是.ico-c,console,-nowindowed:使用控制台,无窗口(默认)-D,-onedir:创建一个目录,包含EXE文件,但会依赖很多文件(默认选项)
  • 例:pyinstaller -F demo.py
    pyinstaller 官网说明

  • 打包

    • 如果Python脚本使用到了第三方库,如何打包?
      方法一:将第三方库对应的包复制到待打包python脚本的同目录下,再执行打包命令。
      方法二:pyinstaller.exe -F 路径\文件名.py
    • 我的python脚本主要是命令行输出,但是程序执行完就退出无法查看相关信息,如何处理?
      在python脚本最后一行添加命令:os.system('pause') 或者 raw_input('Press enter any key to exit...')
    • 我想给我的打包后的执行程序换个图标,如何处理?
    • 使用参数-i。如命令:pyinstaller -F -i tupian\qq.ico ccc.py。文件后缀名必须是.ico
    • 程序运行出现CMD窗口 带上参数-w即可。pyinstaller.exe -F call_login.py -w (-w表示去掉控制台窗口显示)
  • 如何减小pyinstaller打包体积

平时在使用pyinstaller打包python程序动辄几十M甚至几百M

Packages包含 大小
10.4M
Pyqt5 41.9M
numpy 324M
Pandas 498M
numpy+Pandas(两者有重叠部分) 547M
Mdfreader(自带Pandas和UI界面,会带入QT) 548M
  • 建立虚拟环境打包是否可以缩小体积呢
    • 首先安装pipenv
pip install pipenv
- 安装完成后即可创建虚拟环境并进入打包
#建立虚拟环境
pipenv install
#进入虚拟环境
pipenv shell
#安装模块
pip install 小工具.py里面用到的模块
#打包的模块也要安装
pip install pyinstaller
#开始打包
pyinstaller -Fw main.py
- 使用upx压缩
  - 下载upx

UPX: the Ultimate Packer for eXecutables - HomepageUPX: the Ultimate Packer for eXecutables - Homepage
解压出来之后,将UPX.exe 复制到pyinstaller.exe同文件夹下。
- 开始打包
修改pyinstaller产生的.spec文件,将upx=False改成upx=True

python3默认安装了venv虚拟环境,所以直接使用即可

  • 创建虚拟环境
cmd命令行下执行
  python -m venv 英文格式的虚拟环境目录名称

  • 激活需要环境

注意:只有激活之后,才算进入该虚拟环境,否则安装包时,依然是安装在全局环境之下

激活文件在Script文件夹下,如图所示。激活:activate.bat,退出:deactivate.bat
激活方式为:dos 界面进入pyton虚拟环境文件夹/Script,然后输入activate.bat (也可直接输入activate)即可激活环境,输入python 就进入python3.6环境了。
退出方式:输入deactivate.bat 或 deactivate

posted on   何苦->  阅读(392)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2019-05-19 程序员与树莓派

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示