搜索
首页后端开发Python教程如何将Python脚本打包成可执行文件?(详细)

本篇文章给大家带来的内容是关于如何将Python脚本打包成可执行文件?(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

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

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

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

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

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

Freezing Your Code

各种打包工具的对比如下(来自文章Freezing Your Code):

Solution Windows Linux OS X Python 3 License One-file mode Zipfile import Eggs pkg_resources support
bbFreeze yes yes yes no MIT no yes yes yes
py2exe yes no no yes MIT yes yes no no
pyInstaller yes yes yes no GPL yes no yes no
cx_Freeze yes yes yes yes PSF no yes yes no
py2app no no yes yes MIT no yes yes yes

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

安装PyInstaller

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

pip install pyinstaller

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

python setup.py install

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

pyinstaller --version

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

  • pyinstaller : 打包可执行文件的主要命令,详细用法下面会介绍。

  • pyi-archive_viewer : 查看可执行包里面的文件列表。

  • pyi-bindepend : 查看可执行文件依赖的动态库(.so或.dll文件)

  • pyi-... : 等等。

使用PyInstaller

pyinstaller的语法:

pyinstaller [options] script [script ...] | specfile

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

pyinstaller mycript.py

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

pyinstaller -F mycript.py

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

当然,pyinstaller还有各种选项,有通用选项,如-d选项用于debug,了解pyInstaller执行的过程;还有一些针对不同平台的选项,具体用法可以访问PyInstaller官方WIKI。

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

pyi-makespec options script [script ...]

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

pyinstaller specfile
pyi-build specfile

PyInstaller的原理简介

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

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

可以直接发布输出的整个文件夹里面的文件,或者生成的可执行文件。你只需要告诉用户,你的应用App是自我包含的,不需要安装其他包,或某个版本的Python,就可以直接运行了。

需要注意的是,PyInstaller打包的执行文件,只能在和打包机器系统同样的环境下。也就是说,不具备可移植性,若需要在不同系统上运行,就必须针对该平台进行打包。

以上是如何将Python脚本打包成可执行文件?(详细)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
使用pyjokes创建随机笑话的Python脚本使用pyjokes创建随机笑话的Python脚本Sep 13, 2023 pm 08:25 PM

您想为您的Python脚本或应用程序添加一些幽默吗?无论您是构建聊天机器人、开发命令行工具,还是只是想用随机笑话自娱自乐,pyjokes库都可以为您提供帮助。借助pyjokes,您可以轻松生成各种类别的笑话,并根据您的喜好进行自定义。在这篇博文中,我们将探讨如何使用pyjokes库在Python中创建随机笑话。我们将介绍安装过程、生成不同类别的笑话、自定义笑话、在控制台应用程序或网页中显示它们,以及处理可能发生的任何潜在错误。安装pyjokes在我们开始使用pyjokes创建随机笑话之前,我们需

用于监控网站变化的Python脚本用于监控网站变化的Python脚本Aug 29, 2023 pm 12:25 PM

在当今的数字时代,了解网站上的最新变化对于各种目的都至关重要,例如跟踪竞争对手网站上的更新、监控产品可用性或随时了解重要信息。手动检查网站是否有更改可能既耗时又低效。这就是自动化发挥作用的地方。在这篇博文中,我们将探讨如何创建Python脚本来监控网站更改。通过利用Python的强大功能和一些方便的库,我们可以自动化检索网站内容、与以前的版本进行比较并通知我们任何更改的过程。这使我们能够保持主动并及时对我们监控的网站上的更新或修改做出反应。设置环境在开始编写脚本来监控网站更改之前,我们需要设置P

PyCharm高级教程:利用PyInstaller将代码打包为EXE格式PyCharm高级教程:利用PyInstaller将代码打包为EXE格式Feb 20, 2024 am 09:34 AM

PyCharm是一款功能强大的Python集成开发环境,提供了丰富的功能和工具来帮助开发者提高效率。其中,PyInstaller是一个常用的工具,可以将Python代码打包为可执行文件(EXE格式),方便在没有Python环境的机器上运行。在本篇文章中,我们将介绍如何在PyCharm中使用PyInstaller将Python代码打包为EXE格式,并提供具体的

完全指南:确保准确查看Django版本完全指南:确保准确查看Django版本Feb 19, 2024 pm 06:33 PM

专业指南:如何准确查看Django版本,需要具体代码示例引言:Django是一个高度受欢迎的PythonWeb框架,其不断更新的版本对于开发者来说非常重要。查看Django版本对于确保使用最新功能和修复了的漏洞至关重要。本文将介绍如何准确查看Django版本,并提供具体的代码示例。一、使用命令行查看Django版本使用命令行是最简单快捷的方式来查看Djan

Flask安装配置教程:轻松搭建PythonWeb应用的利器Flask安装配置教程:轻松搭建PythonWeb应用的利器Feb 20, 2024 pm 11:12 PM

Flask安装配置教程:轻松搭建PythonWeb应用的利器,需要具体代码示例引言:随着Python的日益流行,Web开发也成为了Python程序员的必备技能之一。而要进行Python的Web开发,我们需要选择合适的Web框架。在众多的PythonWeb框架中,Flask是一款简洁、易上手且灵活的框架,备受开发者们的青睐。本文将介绍Flask框架的安装、

Python脚本自动刷新Excel电子表格Python脚本自动刷新Excel电子表格Sep 09, 2023 pm 06:21 PM

Python和Excel是两个强大的工具,结合起来可以开启自动化世界。Python具有多功能的库和用户友好的语法,使我们能够编写脚本来有效地执行各种任务。另一方面,Excel是一种广泛使用的电子表格程序,它为数据分析和操作提供了熟悉的界面。在本教程中,我们将探索如何利用Python来自动化刷新Excel电子表格的过程,从而节省我们的时间和精力。您是否发现自己花费了宝贵的时间使用更新的数据手动刷新Excel电子表格?这是一项重复且耗时的任务,可能会真正降低生产力。在本文中,我们将指导您完成使用Py

如何在Linux系统中运行Python脚本如何在Linux系统中运行Python脚本Oct 05, 2023 am 08:05 AM

如何在Linux系统中运行Python脚本作为一种强大的脚本语言,Python在Linux系统中广泛应用。在本文中,我将为你介绍如何在Linux系统中运行Python脚本,并提供具体的代码示例。安装Python首先,确保你的Linux系统上已经安装了Python。在终端中输入以下命令来检查系统是否已安装Python:python--version如果显示了

如何利用Python脚本在Linux系统中进行日志分析如何利用Python脚本在Linux系统中进行日志分析Oct 05, 2023 am 08:48 AM

如何利用Python脚本在Linux系统中进行日志分析引言:在运维操作中,日志分析是一个重要的环节。通过对日志文件进行分析,我们可以及时发现问题、优化系统,并提高系统的稳定性和性能。本文将介绍如何使用Python脚本在Linux系统下进行日志分析,并提供一些具体的代码示例。一、选择合适的日志文件日志文件是系统运行时会实时写入的文本文件,它记录了系统的各种运行

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版