文章目录

  • 关于PyInstaller
    • 打包到一个文件夹
    • 打包成一个可执行文件
    • 隐藏源代码
  • 如何使用
    • UPX
    • 加密python字节码
    • 多版本
  • sepc文件

关于PyInstaller

将程序运行需要的包和解释器打包起来。
官方文档:https://pyinstaller.readthedocs.io/en/stable/requirements.html

打包到一个文件夹

pyinstaller main.py

打包成一个可执行文件

运行时会创建一个临时文件夹,将需要的包复制到临时文件夹中,因此稍慢一些,正常结束时会自动删除,异常结束可能不会删除临时文件夹。

pyinstaller --onefile main.py  # pyinstaller -F main.py
pyinstaller --onefile --windowed main.py  # 窗口应用

隐藏源代码

打包的应用不包含任何源代码,不过编译成pyc文件,可以被反编译暴露代码逻辑。

如果想更彻底的隐藏源代码,使用CPython编译,再用pyinstaller打包。

pyinstaller还可以对python字节码进行加密,不过也可以被轻易得到秘钥解密得到字节码。

如何使用

执行pyinstaller main.py,在当前目录自动建立两个目录builddist,还生成了一个main.spec文件。其中build放了build日志和duild过程中需要的文件,dist中放了打包的包和生成的可执行文件。main.spec后面会仔细讲。

UPX

UPX压缩可执行文件和库,使得更小。运行时动态解压。

加密python字节码

需要先安装PyCrypto模块,使用参数--key={16char}

多版本

在虚拟环境下pyinstaller支持不同的python版本.

在不同虚拟机下pyinstaller以支持不同的OS.

sepc文件

可用pyi-makespec main.py命令生成spec文件,暂时不进行打包。

其中最长需要修改的就是datas这个部分,可以将代码中用到的文件一起打包,例如datas=[('./data/1.img', './data/'), ('./model/detect.weights', '.')],格式是(相对于spec的路径,相对于可执行exe的路径)。不过好像打包之后手动复制过去也行。



Maximum recursion depth exceeded:

递归层数过深,可以通过在main.spec文件中添加以下两行代码解决

# -*- mode: python -*-
import sys
sys.setrecursionlimit(5000)  #5000可根据情况修改


Cannot find existing PyQt5 plugin directories:

找不到PyQt5,这种情况可能你是用conda安装的PyQt5,重新用pip安装一下可以解决这个问题。

参考:https://stackoverflow.com/questions/52376313/converting-py-file-to-exe-cannot-find-existing-pyqt5-plugin-directories/52376965



You may load I/O plugins with the skimage.io.use_plugin command. A list of all available plugins can be found using skimage.io.plugins():

将main.spec中的相关地方修改成以下形式:

from PyInstaller.utils.hooks import collect_data_files, collect_submodulesdatas = collect_data_files("skimage.io._plugins")
hiddenimports = collect_submodules('skimage.io._plugins')

参考:https://stackoverflow.com/questions/34761862/pyinstaller-you-may-load-i-o-plugins-with-the-skimage-io-use-plugin



实际打包过程中由于代码中使用的包不同可能还会碰到其它的问题,就需要自己去摸索了。

参考

  • https://blog.csdn.net/sagittarius_warrior/article/details/78457824
  • http://legendtkl.com/2015/11/06/pyinstaller/

使用PyInstaller将python打包成exe相关推荐

  1. python打包成.exe程序

    一.需求 有些时候,我们想做个带图形化界面的小工具用于pc端,使用MFC当然可以,java也有何不可,那么使用python呢?是否也可以把带有图形化界面的python程序打包成.exe程序?答案是肯定 ...

  2. cmd python封装成exe_别再问我怎么Python打包成exe了!

    也许我们不一定是专业的程序员,但是我们仍然可以通过代码提高我们的效率,尽量少加班,多陪陪媳妇(如果有).再不行,让代码替我们干着重复的工作,我们有节省出来的时间打游戏不好嘛,是吧,哈哈哈. 但是呢,我 ...

  3. Python打包成exe,pyc

    D:\mypython\path\ C:\Python27\Scripts\pyinstaller.exe -w mypython.py # Python打包成exe D:\mypython\path ...

  4. python打包成.exe文件时出现“系统找不到指定路径”

    python打包成.exe文件时出现"系统找不到指定路径" 我在一开始写工程时就想到最后打包的时候可能会出现文件位置会发生移动,所以并没有使用绝对路径,而都是以相对路径写的程序. ...

  5. Python打包成exe,文件太大问题解决办法

    Python打包成exe,文件太大问题解决办法 原因 解决办法 具体步骤 情况一:初次打包 情况二:再次打包 原因 由于使用pyinstaller打包.py文件时,会把很多已安装的无关库同时打包进去, ...

  6. python如何将图片打包进exe里_史上最详细的Python打包成exe文件教程

    打包成exe文件可以让python代码在没有python环境的条件下,依然能够运行,实在是码农们写追女朋友表白.情人节浪漫的必需品! 1.使用豆瓣镜像源下载: pyinstaller 有需要了解如何使 ...

  7. python打包成exe文件大、执行慢_Pyinstaller打包exe太大,运行太慢

    1.背景 通过python使用pyqt编写了一个界面程序,并使用pyinstaller将其打包成exe文件 2.问题 打包的exe文件非常大,有280M,而且更无法忍受的是打开非常非常的慢!!! 3. ...

  8. 别再问我怎么Python打包成exe了!

    作者 | Python进阶者 来源 | Python爬虫与数据挖掘 阅读文本大概需要 10 分钟 前言 也许我们不一定是专业的程序员,但是我们仍然可以通过代码提高我们的效率,尽量少加班,多陪陪媳妇(如 ...

  9. Python打包成exe文件_详细操作

    Python打包成exe文件 前言 一.安装pyinstaller 1.1 安装pyinstaller,使用安装命令: 1.2 如果遇到需要更新版本请输入: 1.3 检查是否正确安装 1.4 稍等,水 ...

最新文章

  1. laravel-mix 使用
  2. Apache 配置 Basic 认证
  3. bzoj1564: [NOI2009]二叉查找树
  4. LVS的NAT工作模型详解
  5. 我的网盘(云存储)功能需求,免费网盘需求,争取早日和百度网盘说拜拜
  6. 树莓派 —— USB 摄像头简单测试 (拍照 视频)
  7. CSS各种选择符的优先级
  8. 测试电梯的测试用例_测试用例设计经典面试题
  9. 【HTML5】Web存储、通信、地理位置
  10. 385. Mini Parser
  11. Grunt上手指南(转)
  12. mysql主从不同步的解决方式
  13. flink 异步io mysql 缓存_Flink用于外部数据访问的异步I/O
  14. 单链表反转(递归和非递归)
  15. Effective C++ -----条款05:了解C++默默编写并调用哪些函数
  16. 戴尔修复计算机软件,DELL电脑系统恢复工具(Dell OS Recovery Tool)2019 v2.3.6066官方版...
  17. 固态硬盘打开计算机就死机,SSD死机卡顿怎么办 固态硬盘使用详解
  18. 设计师胡晓丹的创作历程
  19. 十万部冷知识:世界杯卫冕冠军,往往会在小组赛出局?
  20. 密码学与加密算法详解

热门文章

  1. 有字库API方法使用一二
  2. 互联网晚报 | 爱奇艺回应因限制投屏被起诉事件;“鱼跃医疗”回应被罚270万元;2022年全国城市GDP十强全部出炉...
  3. Nginx-应用:静态资源部署、反向代理以及负载均衡
  4. 【卫朋】结构设计:如何使用 PROE 导出 CAD 文件?
  5. 三维格式学习-wrl
  6. 中国工程科学院计算机院士,冯夏庭 中国工程院院士
  7. QT: skipping incompatible xx/xxx.dll when searching for -lxxx
  8. Android快速集成抖音分享
  9. gta5 android版数据包,gta5手机版2.21g数据包
  10. 如何用虚拟机VMware安装win10/win7(最详细图解)