码迷,mamicode.com
首页 > 其他好文 > 详细

Pyinstaller原理详解

时间:2021-04-20 14:07:38      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:一起   除了   字节码   字节   可读性   领域   strong   程序   文件   

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原理详解

标签:一起   除了   字节码   字节   可读性   领域   strong   程序   文件   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!