py2exe,Pyinstaller,Cx_freeze,Nuitka都可以完成python打包的任务。

Pyinstaller和Nuitka都号称跨平台,但其实顶多只能算是工具本身跨平台,实际体验中不仅打包产生的文件不能跨平台,能否成功打包本身也不确定。

Nuitka

nuitka的作用是将python程序转换成C语言的可执行elf文件。这样在运行时就可以享受到C语言处理过程中的优化,提高速度。经测试,Nuitka打包后的exe比Pyinstaller打包后的exe运行速度提升30%,PyQT5的UI文件转换成py文件转换成C语言后,界面秒开呀。

安装:

sudo apt-get install nuitka

使用:

假设有python文件 main.py 其中import了 a.py, b.py, c.py

转换为可执行文件只需运行:

nuitka --recurse-all main.py

运行后会生成main.exe文件,注意main.py中import的文件会被自动包含。

输入下面代码即可执行

./main.exe

但是有网友反馈了一些他的坑:

问题:

1.跨平台性很差

这点,上面的"python打包工具对比"中也谈到了。

具体在我使用时,在ubuntu中打包了一份python文件,拿到windows下运行,提示该版本的main.exe 与您运行的 Windows 版本不兼容。请查看计算机的系统信息,了解是否需要 x86 (32 位)或 x64 (64 位)版本的程序,然后联系软件发布者。

在centos中运行,提示有python依赖库找不到。

2.使用 --standalone参数后无法生成.exe文件

官网介绍说使用该参数可以解决代码对python是否安装的依赖The created binaries can be made executable independent of the Python installation, with --standalone option.

可是我用这个参数后就无法生成可执行文件了。

Pyinstaller

安装:

1、安装pywin32下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的

使用pip命令安装:pip install pywin32

2、安装Pyinstaller下载安装文件安装:

使用pip命令安装:pip install PyInstaller

运行:

pyinstaller main.py

即可得到可执行文件,虽然也存在本机编译后的文件不能在服务器执行的问题:

gclt: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /root/gclt/libz.so.1)

但是在服务器上编译的代码是可以在本机成功执行,当然了,所谓的跨平台,其实是个伪命题,Linux下编译产生的可执行文件并不能在Windows和Mac OS下执行,前者会产生类似下面的错误(使用Nuitka时也是这样)Too big to fit in memory

而在Mac OS下则会直接提示找不到相关可执行文件。

最后,分别在Linux,Windows,Mac OS下分别使用Pyinstaller完成任务

开发完python程序后使用pyinstaller 打包成exe程序后出现错误:

通常的打包命令:

pyinstaller.exe --hidden-import=queue -w -F $FileName$

运行出错

为了定位问题的出现需要修改上述打包命令为:pyinstaller.exe --hidden-import=queue -F $FileName$

有时候将.py文件打包成.exe文件后,不一定能够正常运行。但是点.exe后程序一闪而退,就不知道问题出在哪里?在运行程序后快速进行屏幕抓取:(可能需要抓多次)

错误信息

从上图中,可以看出由于文件找不到导致程序出错。

从这里也可以大致了解下pyinstaller成可执行程序的流程是:

会将exe解压到系统某处(图中为AppData/Local/Temp下),然后解释执行。

2. 也可以在cmd命令行 或者 Windows PowerShell里面运行.exe文件

解决 FileNotFoundError 问题

然后使用如下命令打包:pyinstaller.exe --onefile --additional-hooks-dir=. --hidden-import=queue -w -F robotManagerTools.py

类似pyinstaller_Python 打包工具对比,Nuitka vs Pyinstaller相关推荐

  1. 为何webpack风靡全球?三大主流模块打包工具对比

    小编说:前端项目日益复杂,构建系统已经成为开发过程中不可或缺的一个部分,而模块打包(module bundler)正是前端构建系统的核心.Webpack能成为最流行的打包解决方案,并不是偶然.webp ...

  2. 【python】将代码打包为软件(pipenv+pyinstaller)

    引言 python项目开发完成后,如何打包成软件,比如windows64下使用的exe应用程序? 准备 一般我们会在pipenv创建的虚拟环境下打包,不然打包后的软件会特别大.所以需要先安装pipen ...

  3. exe打包工具_pyqt5快速上手基础篇12-使用Pyinstaller打包应用程序

    前言 本节我们学习如何使用Pyinstaller打包pyqt5应用程序,pyqt5的打包要比之前文章中讲述的tkinter的打包稍微复杂点,主要区别在于pyqt5打包需要导入Qt相关库,笔者开始打包时 ...

  4. python 打包 .app 运行 控制台窗口_Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法...

    windows系统下安装Pyinstaller cmd下输入指令 pip install PyInstaller Pyinstaller的使用 进入需要打包的目录下,执行打包命令 Pyinstalle ...

  5. python打包工具报错_Python打包发布神器—Pyinstaller

    一前言 在windows平台学习python的过程中,你肯定会遇到需要把.py脚本打包成.exe的情形,如此,至少有两方面的好处:第一,你的代码保密性更好,其他人不能直接看到python代码:第二,打 ...

  6. python打包工具 --- pyinstaller

    安装 安装python并添加到环境变量之后,在终端执行如下命令即可: pip install pyinstaller 截图如下: 若安装失败,可到: https://www.lfd.uci.edu/~ ...

  7. Python 打包工具 pyinstaller

    介绍 官网 PyInstaller将 Python 应用程序及其所有依赖项捆绑到一个包中.用户无需安装 Python 解释器或任何模块即可运行打包的应用程序. PyInstaller支持 Python ...

  8. Python打包工具

    目前几个主要的活跃 PyInstaller,成熟,用户最多:其原理就是复制文件.支持打包成onefile的可执行文件.目录两个方式.PyArmor有对其官方适配. cx_Freezer,原理与PyIn ...

  9. python 打包 .app 运行 控制台窗口_Python打包工具

    1 Python打包工具 目前在windows平台上将Python程序打包成exe文件主要有三个工具. 今天将一个Tkinter写的界面程序打包成exe文件,三个工具都试了一遍,感觉PyInstall ...

最新文章

  1. sql parser
  2. java 如何对由json对象构成的数组形式的字符串进行遍历?
  3. linux脚本 的使用,linux shell脚步使用讲解
  4. 如何把你的Windows PC变成瘦客户机
  5. 应用名称本地化/国际化
  6. C++11并发编程:多线程std::thread
  7. 前端学习(631):字符串类型
  8. 用于磁盘I / O性能SQL Server监视工具
  9. 宽带服务器盒信号灯红色闪烁,宽带出现光信号灯是红色是怎么回事
  10. 财经职业技能测试的软件,2020技能 2.财经管理类 职业技能测试考试大纲(试行)...
  11. JAVA实现大华摄像头WEB方式实时显示视频,H5界面展示方式思路
  12. video.js播放视频
  13. 数据建模:个人信用分是如何计算出来的?
  14. 下载王者荣耀皮肤高清图片
  15. 漏洞复现----37、Apache Unomi 远程代码执行漏洞 (CVE-2020-13942)
  16. F2FS MOUNT过程
  17. 操作系统原理——内存的分段、分页和平坦模型:区别与发展
  18. 【蓝月传奇3D】手游辅助脚本(多开/练级/日常/BOSS/活动等)
  19. 名称 WORKGROUP:1d 不能注册到 IP 地址 192.168.99.185 的界面上。
  20. ubuntu使用sudo su进入root报错Cannot execute /bin/csh: No such file or directory解决方法

热门文章

  1. jquery --- 使用when方法等待2个异步事件结束后执行某一个函数.
  2. LVM逻辑卷详解及创建
  3. 世界杯快到了,看我用Python爬虫实现(伪)球迷速成!
  4. 微软过冬的三大姿势:裁员,回购400亿美元股票,在中国开合资公司
  5. 1008: University
  6. linux运维基础篇 unit7
  7. Node.js有了新的管理者
  8. WPF的转换器中使用Brush应注意问题
  9. PXE自动安装FreeBSD
  10. 相机标定(三) —— 畸变校正