Python脚本如何打包成可执行文件

  介绍

这篇文章将为大家详细讲解有关Python脚本如何打包成可执行文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Python是一个脚本语言,被解释器解释执行。它的发布方式:

. py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)

.pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看的到,可以使用佩克文件发布,佩克文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。

可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows、Linux、Mac,…)。

本文主要就是介绍最后一种方式,. py和。佩克都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,其它仅作比较和参考。

冻结代码

各种打包工具的对比如下:

 Python脚本如何打包成可执行文件

p。其中pyInstaller和cx_Freeze都是不错的,stackoverflow上也有人建议用cx_Freeze,说是更便捷些.pkg_resources新版的pyInstaller貌似是支持的。

<>强安装pyInstaller

对于那些网络比较稳定,能够流畅使用脉冲源地址的用户,直接下面的命令就可以搞定:

pip安装pyInstaller

通常我们会下载源码包,然后进入包目录,执行下面的命令(需要安装setuptools):

python设置。py安装

安装完后,检查安装成功与否:

pyinstaller——版本

安装成功后,就可以使用下面的命令了:

    <李> pyinstaller:打包可执行文件的主要命令,详细用法下面会介绍。 <李> pyi-archive_viewer:查看可执行包里面的文件列表。 <李> pyi-bindepend:查看可执行文件依赖的动态库(所以或. dll文件) <李>南通-…:等等。
      李,

<强>使用PyInstaller

PyInstaller的语法:

PyInstaller[选项]脚本(脚本…)| specfile

最简单的用法,在和myscript。py同目录下执行命令:

pyinstaller mycript。py

然后会看到新增加了两个目录构建和距离,距离下面的文件就是可以发布的可执行文件,对于上面的命令你会发现dist目录下面有一堆文件,各种都动态库文件和myscrip可执行文件。有时这样感觉比较麻烦,需要打包dist下面的所有东西才能发布,万一丢掉一个动态库就无法运行了,好在pyInstaller支持单文件模式,只需要执行:

pyInstaller - f mycript.py

你会发现dist下面只有一个可执行文件,这个单文件就可以发布了,可以运行在你正在使用的操作系统类似的系统的下面。

当然,pyInstaller还有各种选项,有通用选项,如- d选项用于调试了解pyInstaller执行的过程,

在执行pyInstaller命令的时候,会在和脚本相同目录下,生成一个.spec文件,该文件会告诉pyInstaller如何处理你的所有脚本,同时包含了命令选项。一般我们不用去理会这个文件,若需要打包数据文件,或者给打包的二进制增加一些Python的运行时选项时…一些高级打包选项时,需要手动编辑。规范文件。可以使用:
pyi-makespec选择脚本(脚本…]

创建一个.spec文件,对于手动编辑的。规范文件,我们可以使用下面任意一条命令:

pyinstaller specfile pyi-build specfile

<强> pyinstaller的原理简介

pyinstaller其实就是把python解析器和你自己的脚本打包成一个可执行的文件,和编译成真正的机器码完全是两回的事,所以千万不要指望成打包成一个可执行文件会提高运行效率,相反可能会降低运行效率,好处就是在运行者的机器上不用安装python和你的脚本依赖的库。在Linux操作系统下,它主要用的binutil工具包里面的ldd和objdump命令。

pyinstaller输入你指定的的脚本,首先分析脚本所依赖的其他脚本,然后去查找,复制,把所有相关的脚本收集起来,包括python解析器,然后把这些文件放在一个目录下,或者打包进一个可执行文件里面。

Python脚本如何打包成可执行文件