龙空技术网

Python打包成exe的方法介绍

幽默晚风A2 2017

前言:

眼前同学们对“python打包成一个exe”大约比较关心,咱们都需要知道一些“python打包成一个exe”的相关资讯。那么小编也在网上汇集了一些有关“python打包成一个exe””的相关内容,希望兄弟们能喜欢,你们快快来学习一下吧!

python的开发效率非常的高,但是当我们用python写一些小工具需要给用户使用的时候,用户大多数是没有安装python的。

本文介绍两种python的打包方案,使用pyinstaller和nuitka打包成exe(或其他操作系统的可执行程序)后便可以直接分发给用户,无需用户安装python。

示例程序

这边使用pyqt6来做演示,使用pyqt6我们可以快速创建一个跨平台原生gui程序,也是这两个打包工具最常用的场景之一。

安装pyqt6库:

pip install pyqt6

创建mainwindow.py,写入以下内容:

import sysfrom PyQt6.QtWidgets import QWidget, QToolTip, QPushButton, QApplicationfrom PyQt6.QtGui import QFontclass Example(QWidget):    def __init__(self):        super().__init__()        self.initUI()    def initUI(self):        QToolTip.setFont(QFont("SansSerif", 10))        self.setToolTip("This is a <b>QWidget</b> widget")        btn = QPushButton("Button", self)        btn.setToolTip("This is a <b>QPushButton</b> widget")        btn.resize(btn.sizeHint())        btn.move(50, 50)        self.setGeometry(300, 300, 300, 200)        self.setWindowTitle("Tooltips")        self.show()def main():    app = QApplication(sys.argv)    ex = Example()    sys.exit(app.exec())if __name__ == "__main__":    main()

执行程序:

python mainwindow.py

执行后会打开一个demo窗口:

pyinstaller

安装:

pip installer pyinstaller

打包为文件夹:

pyinstaller -D -w ./mainwindow.py

该命令会打包exe、python解释器和其他dll到 dist/mainwindow 中。

打包为单个exe:

pyinstaller -F -w ./mainwindow.py

该命令只输出一个mainwindow.exe到dist目录中,打开 dist/mainwindow.exe 时会将所有依赖项解压到临时目录中然后运行,当然这一步对用户是无感的。

使用这两种方法生成的exe都可以直接分发给用户,pyinstaller是大多数时候的首选项,方便快捷。不过pyinstaller最大的问题是无法隐藏源码以及效率稍微慢一些。

nuitka

nuitka使用c语言编译器将python源码及模块编译成原生二进制,据此可以做到完全隐藏源码,同时提高运行效率。

安装:

pip installer nuitka

安装的时候nuitka会根据我们的操作系统选择最佳的c语言编译器。

打包为文件夹:

python -m nuitka mainwindow.py --standalone --enable-plugin=pyqt6 --disable-console

该命令会输出 mainwindow.exe 到当前目录下,我们可以直接拿来执行或者分发给其他用户。

需要注意的是这种方式也是解压到临时目录中,效率相比打包成文件夹慢一点,但是整体还是比 pyinstaller 快。

原文链接:

标签: #python打包成一个exe