新手快速入门:python打包成exe文件(非常详细)

目录:

                前言:

                1. PyInstaller打包exe

                安装

                使用

                用法: 

                2. py2exe

        安装 py2exe:

        基本用法

        创建 setup.py

执行打包命令

         常用选项

扫描二维码关注公众号,回复: 17574970 查看本文章

示例

         添加数据文件

                3. cx_Freeze

         安装 cx_Freeze

         创建打包脚本

         执行打包命令

         包含数据文件

         设置图标

         打包选项

         生成安装程序

                4.Nuitka

         安装 Nuitka

         基本用法

         常用选项

         例子

         性能优化

         注意事项

         示例项目结构

                5.其他工具

                总结


前言:

        在python文件创建完成后,无法要在没有python环境下运行,而打包成exe文件就很好的解决了问题,exe文件能在任何一台Windows相同系统上运行,打包成exe文件使人在别人电脑上运行方便,拥有更强的移植性

1. PyInstaller

Pyinstaller官网https://pyinstaller.readthedocs.io/en/stable/https://pyinstaller.readthedocs.io/en/stable/

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 使用分号 ;,Linux 和 macOS 使用冒号 :

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 代码编译成可执行文件。

基本用法

  1. 编译 Python 脚本

    使用 Nuitka 编译 Python 脚本非常简单。在命令行中,执行以下命令:

    nuitka --standalone your_script.py

    这将生成一个包含可执行文件及其所有依赖项的 your_script.dist 目录。

  2. 生成单一可执行文件

    如果你想要将所有内容打包为一个单一的可执行文件,可以使用 --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 密集型操作,其提升效果可能不如预期。

注意事项

  1. 二进制兼容性:编译的可执行文件仅在相同的操作系统和 Python 解释器版本上有效。如果需要在不同版本间移植,可能会出现问题。

  2. 支持的库:虽然 Nuitka 支持大部分 Python 标准库及主要的第三方库,但某些 C 扩展可能需要特殊的处理。

  3. 执行环境:确保你的目标环境中有适当的 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 应用程序!