首页 > 其他 > 详细

Pyinstaller原理详解

时间:2021-04-17 22:47:19      阅读:34      评论:0      收藏:0      [点我收藏+]

Pyinstaller原理详解

什么是Pyinstaller

Pyinstaller可以把Python程序打包成exe文件,可以在没有Python的电脑上运行,主要用于生产用。

Python.h!

在讲原理之前,我们讲一下python.h这个东东。
众所周知,Python是用C语言编写的,内部各种复杂的API需要python.h这个东西来协调,来封装,这样可以提高代码的可读性。
python.h主要用于编写扩展模块,所以你可以把任意一个Python程序转换成使用python.h的C程序。
基于python.h,才有了Pyinstaller。

主原理

首先我们看了上面的铺垫,知道想转成exe,得先转c。
但对于Python代码的分析是非常复杂的,转成C?!这不得开发个几年才怪呢。
幸好我们不用造轮子,已经有一个名叫Cython的东西出现了。
知道.pyd的原理的都知道,其实pyd=dll≈exe,根据这个表达式可以推出,想编译.pyd,必须先转换Python到C。
所以我们可以直接利用Cython把Python转换成C语言,然后编译。
但是,像是加icon之类的还是要靠自己,所以Pyinstaller也不是完全封装。

另一种思路:字节码?

除了Pyinstaller,在转exe领域还有一条已经累死的黑马:py2exe。
py2exe采用了和Pyinstaller完全不一样的思路,虽然复杂,但是曾经是唯一的选择,也算是经典。
Python是一种动态编译语言,在执行过程中解释器一边运行一边编译下面的代码。(这只是概括,真正的原理贼复杂,别杠,这点足够了)
py2exe背后就是一个被hook了的Python解释器,在执行时,不是运行而是把字节码提供给py2exe,py2exe再把汇编字节码整合在一起,编译输出exe。
这不就是PyPy吗

Pyinstaller原理详解

原文:https://www.cnblogs.com/blog-xhg78999/p/pyinstaller_yuanli.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!