目录:

前言:
在python文件创建完成后,无法要在没有python环境下运行,而打包成exe文件就很好的解决了问题,exe文件能在任何一台Windows相同系统上运行,打包成exe文件使人在别人电脑上运行方便,拥有更强的移植性
1. PyInstaller
PyInstaller 是一个非常流行的工具,可以将 Python 程序打包成独立的可执行文件。
安装
pip install pyinstaller
使用
打开命令提示符(CMD):
按住
+
输入cmd,点击确定
导航到你的 Python 文件所在的目录
cd /d 路径(绝对路径)
然后运行:
pyinstaller 用法 文件名.py
用法:
方法 | 用法 | 解释 |
---|---|---|
--onefile 或 -F | 用于第一个参数() | 单一可运行文件(不填会产生其他依赖文件) |
--noconsole 或 -w 或 --windowed | 用于--onefile(-F)之后 | 不显示黑窗口(CMD),用于GUI应用 |
--icon=icon.ico | 用于文件名之前 | 设置exe图标(一定要是ico文件) |
--add-data | pyinstaller --add-data "你的文件;." 文件名.py | 注意:在 Windows 系统中,文件路径与其他操作系统的分隔符(;与:)有所不同,Windows 使用分号 |
2. py2exe
py2exe官网https://www.py2exe.org/https://www.py2exe.org/
py2exe
是一个将 Python 程序转换成 Windows 可执行文件(.exe)的工具,专门为在 Windows 平台上运行的 Python 应用设计。以下是 py2exe
的详细使用说明,包括安装方法、基本用法、常用选项以及一些常见问题的解决方案。
安装 py2exe:
pip install py2exe
注意:py2exe
仅支持 Windows 平台,因此你只能在 Windows 操作系统上使用它。
基本用法
py2exe
通常通过一个设置脚本来运行,这个设置脚本是一个简单的 Python 脚本,通常命名为 setup.py
。
创建 setup.py
首先,在你的 Python 项目目录下创建一个 setup.py
文件,内容如下:
from distutils.core import setup
import py2exe
setup(
console=['your_script.py'], # 如果是控制台应用
# windows=['your_script.py'], # 如果是 GUI 应用
)
将 your_script.py
替换为你要打包的 Python 脚本的名称。
执行打包命令
在命令行中导航到包含 setup.py
的目录,然后运行以下命令:
python setup.py py2exe
执行后,将在 dist
目录下生成 .exe 文件和必要的文件。
常用选项
在 setup.py
文件中,你可以加入更多的参数以定制打包过程。以下是一些常用的选项:
-
console: 指定要生成控制台应用程序的脚本文件。
-
windows: 指定要生成 GUI 应用程序的脚本文件。
-
name: 指定生成的可执行文件的名称。
-
version: 指定程序的版本号。
-
description: 提供程序的描述信息。
-
options: 自定义额外的选项,例如包括所需的库、数据文件等。
示例
以下是一个更详细的 setup.py
示例:
from distutils.core import setup
import py2exe
setup(
name='MyProgram',
version='1.0',
description='This is my program',
console=['your_script.py'],
options={
'py2exe': {
'packages': ['required_package'], # 要包含的包
'includes': ['additional_module'], # 额外需要包含的模块
'excludes': ['unwanted_module'], # 要排除的模块
}
}
)
添加数据文件
如果你的程序依赖于特定的数据文件(如配置文件、图像等),可以在 setup.py
中包含它们:
data_files = [('.', ['data_file.txt'])]
setup(
...
data_files=data_files, # 包含数据文件
)
如果你想为你的 .exe 文件设置图标,可以使用 win32
的 icon
选项:
from distutils.core import setup
import py2exe
setup(
windows=[{
'script': 'your_script.py',
'icon_resources': [(1, 'icon.ico')], # 指定图标
}],
)
3. cx_Freeze
cx_Freeze官网https://cx-freeze.readthedocs.io/en/latest/https://cx-freeze.readthedocs.io/en/latest/
cx_Freeze
是一个用于将 Python 脚本转换为可执行文件(.exe)的跨平台工具,支持 Windows、macOS 和 Linux。与其他类似工具(如 PyInstaller 和 py2exe)相比,cx_Freeze
提供了很好的灵活性和可定制性,适合用于打包各种复杂的 Python 应用。
安装 cx_Freeze
在使用 cx_Freeze
之前,你需要先安装它。可以通过 pip 进行安装:
pip install cx_Freeze
创建打包脚本
cx_Freeze
通过一个名为 setup.py
的脚本来配置打包过程。在 setup.py
中,你可以定义打包信息以及其他必要的选项。
以下是一个基本的 setup.py
示例:
from cx_Freeze import setup, Executable
# 需要打包的 Python 脚本
script = "your_script.py"
# 设定目标可执行文件的参数
executables = [
Executable(script, base=None) # 如果是 GUI 应用,将 base='Win32GUI'
]
# 配置打包参数
setup(
name="MyApp",
version="1.0",
description="This is my application",
executables=executables,
)
在上面的示例中,将 your_script.py
替换为你要打包的 Python 脚本名称。
执行打包命令
在终端或命令行中,导航到包含 setup.py
的目录,然后运行以下命令:
python setup.py build
执行后,将在 build
目录下生成可执行文件和所有依赖的库。
包含数据文件
如果你的程序需要附带一些数据文件(如配置文件、图片等),需要在 setup.py
中使用 include_files
选项进行配置:
from cx_Freeze import setup, Executable
include_files = ['data_file.txt', 'image.png'] # 要包含的文件列表
setup(
...
options={
'build_exe': {
'include_files': include_files, # 包含数据文件
}
}
)
设置图标
如果你想为生成的可执行文件设置一个图标,可以在 Executable
中加入 icon
参数:
executables = [
Executable(script, base=None, icon='icon.ico') # 指定图标文件
]
打包选项
你可以在 setup.py
中的 options
字典里配置更多参数以定制打包,例如:
- packages: 指定需要包含的第三方库。
- includes: 明确指定需要打包的额外模块。
- excludes: 指定要排除的模块。
- build_exe: 自定义构建输出目录和文件名。
以下是一个更复杂的 setup.py
示例:
from cx_Freeze import setup, Executable
include_files = ['data.txt', 'config.json']
packages = ["numpy", "requests"]
setup(
name="MyApp",
version="0.1",
description="My Application",
options={
'build_exe': {
'include_files': include_files,
'packages': packages,
}
},
executables=[Executable("your_script.py", icon='icon.ico')],
)
生成安装程序
如果你希望生成一个安装程序,可以使用 cx_Freeze
提供的 bdist_msi
功能:
python setup.py bdist_msi
这将生成一个 Windows Installer (.msi) 文件,方便用户安装。
4.Nuitka
nullhttps://nuitka.net/doc/user-manual.htmlhttps://nuitka.net/doc/user-manual.html
Nuitka 是一个静态编译器,它将 Python 代码编译为 C 代码,然后再将其编译为可执行的二进制文件。不同于其他打包工具如 PyInstaller 和 cx_Freeze,Nuitka 的独特之处在于它通过将 Python 代码转换为优化的 C 代码来提高性能,同时也能生成可独立运行的可执行文件。
安装 Nuitka
在使用 Nuitka 之前,首先需要安装它。你可以通过 pip 安装:
pip install nuitka
此外,你还需要确保你的计算机上安装了 C 编译器,例如 GCC(在 Linux 和 macOS 上)或 MinGW(在 Windows 上)。这些编译器会被 Nuitka 用于将生成的 C 代码编译成可执行文件。
基本用法
-
编译 Python 脚本
使用 Nuitka 编译 Python 脚本非常简单。在命令行中,执行以下命令:
nuitka --standalone your_script.py
这将生成一个包含可执行文件及其所有依赖项的
your_script.dist
目录。 -
生成单一可执行文件
如果你想要将所有内容打包为一个单一的可执行文件,可以使用
--onefile
选项:nuitka --standalone --onefile your_script.py
常用选项
Nuitka 提供了多个选项以满足不同的需求,以下是一些常用的命令行参数:
-
--standalone
: 生成独立的可执行文件,包括所有依赖。 -
--onefile
: 生成一个单独的可执行文件。 -
--include-plugin-directory=DIR
: 包含特定的插件目录,用于处理依赖问题。 -
--nofollow-imports
: 不生成依赖项(仅在小项目时使用)。 -
--python-flag=FLAG
: 传递给 Python 解释器的标志。例如,你可以使用--python-flag=-O
来启用优化模式。 -
--output-dir=DIR
: 指定输出目录。
例子
以下是一个完整的 Nuitka 编译示例:
nuitka --standalone --onefile --output-dir=build --include-plugin-directory=plugins your_script.py
性能优化
使用 Nuitka 进行编译可能会提高 Python 代码的执行速度,但性能的提升程度取决于代码的性质。例如,在 CPU 密集型操作中,性能提升可能更为明显。而对于 I/O 密集型操作,其提升效果可能不如预期。
注意事项
-
二进制兼容性:编译的可执行文件仅在相同的操作系统和 Python 解释器版本上有效。如果需要在不同版本间移植,可能会出现问题。
-
支持的库:虽然 Nuitka 支持大部分 Python 标准库及主要的第三方库,但某些 C 扩展可能需要特殊的处理。
-
执行环境:确保你的目标环境中有适当的 C 编译器、Python 解释器和其他依赖项。
示例项目结构
当你使用 Nuitka 编译项目时,可能生成如下结构:
project/
│
├── your_script.dist/
│ ├── your_script.exe # 编译的可执行文件
│ ├── some_dependency.dll # 依赖的 DLL 文件
│ ├── ...
│
├── build/
│ ├── ...
│
├── your_script.py # 源代码
└── ...
5.其他工具
- pyarmor:用于加密和打包 Python 应用程序,适合需要保护源代码的场景。
总结
选择合适的打包工具取决于你的需求和目标平台。对于大多数用户,PyInstaller 是最简单和最常用的选择。py2exe 和 cx_Freeze 、Nuitka 也很有用,尤其是在特定平台上。希望这些信息能帮助你顺利打包你的 Python 应用程序!