python文件转为可执行文件(.exe)的详细步骤

简介: python文件转为可执行文件(.exe)的详细步骤

目录


六一快乐!!!!


前言


安装所需要的工具


关于“pyinstaller”


安装“pyinstaller”


准备python文件


打包python文件


运行可执行文件


注意事项!!!!!


关于依赖项和资源(第三方库或者模块,使用到的图片,配置文件)


打包多个文件


结束了???怎么可能,实际打包出现的问题多的要死!!


spec文件


创建spec文件


1.自动创建


2.手动创建


修改spec文件内容


打包文件




六一快乐!!!!


前言


      在开发Python应用程序时,将代码打包成可执行文件(.exe)是一个常见的需求。,主要是方便接收者的使用,在没有python环境下也能正常打开的可执行文件。本文打包的python文件为事先写好的一个按钮小程序。资源包将会在代码包中展示出来。下面我将详细讲解从零开始把python文件打包成可执行文件的步骤。


安装所需要的工具


在开始之前,我们需要安装打包的工具,我们将使用pyinstaller”来打包Python文件成可执行文件。


关于pyinstaller”


PyInstaller的主要目标是使Python应用程序的部署变得更加简单。它能够将Python代码和其依赖项打包成一个单个的可执行文件,从而消除了用户在部署和运行Python应用程序时需要手动安装Python解释器和相关依赖项的繁琐过程。


PyInstaller支持跨平台运行,并可以在Windows、Mac和Linux等操作系统上使用。它可以处理包括命令行脚本、图形界面应用程序和多个Python文件等不同类型的Python代码。


安装pyinstaller”


1.打开命令行终端(命令提示符):


win+r打开运行,输入cmd,回车进入命令行终端。


2.在命令行终端输入下列命令,并按回车确认:

pip install pyinstaller

等待安装完成即可。


准备python文件


在打包之前,确保你的Python文件可以独立运行,并不依赖于动态加载的模块或其他外部资源。如果你的文件有依赖项,确保它们已经被正确地安装并能够在打包后被访问。


打包python文件


1.打开命令行终端,并控制前往到你包含python文件的目录。这里我有个习惯就是我不会先打开命令行再前往目录,我会之间打开我文件所在地,并直接在这个目录下打开命令行终端:

233.png这样子直接就是在这个目录下的命令行终端了。


2.输入打包的指令然后回车运行:

pyinstaller --onefile your_script.py

这将使用pyinstaller工具将Python文件打包成一个独立的可执行文件。


--onefile选项表示将所有依赖项合并为单个可执行文件,而不是生成多个文件。


3. 打包过程可能需要一些时间,等待它完成。


一旦完成,你将在当前目录中看到一个名为dist的文件夹。


运行可执行文件


  1. 1.进入dist文件夹,你将找到生成的可执行文件,名字为your_script.exe

  2. 2.将可执行文件复制到你想要运行它的计算机上。

  3. 3.双击可执行文件,你的Python程序将开始运行。

注意事项!!!!!


  • 如果你的Python程序有外部库的依赖,你需要在打包之前确保这些库已经安装,并使用适当的命令参数告知pyinstaller包含它们。

  • 如果你的程序使用了图形界面(GUI),你可能需要在打包时指定一些特殊的选项来确保界面在打包后可以正常运行。

  • 在打包过程中,pyinstaller将会创建一些临时文件和文件夹,你可以选择在打包完成后手动删除它们。


关于依赖项和资源(第三方库或者模块,使用到的图片,配置文件)


  1. 1.依赖项管理:如果你的Python程序依赖于外部库或模块,你需要确保这些依赖项在打包后可以正确访问。可以通过在打包命令中使用--hidden-import参数来指定需要包含的额外模块。

  2. 2.数据文件和资源:如果你的程序需要访问数据文件或其他资源文件,例如配置文件、图像等,确保这些文件与可执行文件一起打包。你可以使用--add-data参数来指定包含这些文件,例如:
pyinstaller --onefile --add-data "data_files;data_files" your_script.py

打包多个文件


如果你的应用程序由多个Python文件组成,你可以通过将所有文件作为参数传递给pyinstaller命令来打包它们。

pyinstaller --onefile file1.py file2.py

这将打包所有指定的文件,并生成一个单独的可执行文件。


结束了???怎么可能,实际打包出现的问题多的要死!!


当我第一次用上面方式打包了一次并且成功打包成可执行文件的时候,好爽的感觉!!一打开这个文件,我发现成了“不可执行文件”,路径错误问题,第三方库没有打包过去,环境也没有一起打包过去......


那怎么办啊,语法又记不住,那就用spec文件。


spec文件


spec文件是PyInstaller工具生成的一个配置文件,用于定义和配置打包过程中的各种选项和参数。它是一个纯文本文件,通常与要打包的Python脚本文件位于同一目录中,并以.spec作为文件扩展名。


spec文件包含了一些重要的信息,例如要打包的脚本文件、依赖项、数据文件、资源文件等。通过编辑spec文件,你可以自定义打包过程的行为和结果,以满足特定的需求。


创建spec文件


使用PyInstaller进行打包时,可以通过两种方式生成spec文件:


1.自动创建


在命令行终端中执行以下命令,PyInstaller将自动为指定的Python脚本文件生成一个默认的spec文件:

pyinstaller your_script.py

这将在你python文件所在目录下生成一个名为your_script.spec的spec文件,其中your_script.py是要打包的Python脚本文件名。


2.手动创建


也可以手动创建一个spec文件,并在其中指定需要打包的文件、依赖项和其他选项。创建一个新的文本文件,并使用以下基本结构:

# your_script.spec
# 导入所需的模块
import sys
from PyInstaller.utils import collect_data_files
# 定义spec文件配置
block_cipher = None
a = Analysis(['your_script.py'],  # 替换成你要打包的Python脚本文件
             pathex=[],
             binaries=[],
             datas=collect_data_files('your_package'),  # 替换成你要包含的数据文件路径
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='your_script',  # 替换成你的可执行文件名
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True)
1.

修改spec文件内容


使用文本编辑器打开.spec文件(your_script_name.spec),并根据需要进行修改。你可以自定义输出文件的名称、要包含的附加文件等选项。


1.添加第三方库:在.spec文件中,使用--add-data选项添加第三方库的文件。


  • 如果第三方库包含非二进制文件(例如Python脚本、配置文件),可以使用--add-data选项来指定库文件相对于脚本文件的路径。
datas=[('path/to/library/files/*', 'library/files')]

如果第三方库包含二进制文件(例如DLL文件、共享库),可以使用--add-binary选项来包含这些文件。指定库文件相对于脚本文件的路径。

binaries=[('path/to/library/binary', '.')]

2. 添加图片路径:在.spec文件中,可以使用--add-data选项添加图片路径,以确保图片文件被正确地打包进可执行文件。

datas=[('path/to/image/file.jpg', '.')]

path/to/image/file.jpg替换为实际的图片路径,并根据需要调整目标文件夹。


打包文件


编辑好了spec文件,你可以使用以下命令来执行打包过程:

pyinstaller your_script.spec

然后就会根据spec文件中的配置来进行打包文件,生成可执行文件 。


这是我打包一个按钮小程序时用到的spec文件:

# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
import sys
sys.path.append('d:/python_env/spider2_env/lib/site-packages')
import tkinter as tk
from tkinter import messagebox,ttk
from PIL import ImageTk, Image
import os
import random
a = Analysis(
    ['anniu.py'],
    pathex=['D:/exe/py1'],
    binaries=[],
    datas=[('D:\\exe\\py1\\imgs\\a.jpg', 'imgs'), ('D:\\exe\\py1\\imgs\\c.jpg', 'imgs')],
    hiddenimports=['PIL', 'tkinter', 'random', 'PIL.ImageTk'],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='anniu',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

最后成功了。


希望本篇文章能够对你遇到的问题或者学习路上提供帮助!

相关文章
|
1月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
15天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
17 2
|
1月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
54 1
Python实用记录(十三):python脚本打包exe文件并运行
|
21天前
|
数据采集 数据可视化 数据处理
如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`)
本文介绍了如何使用Python实现一个交易策略。主要步骤包括:导入所需库(如`pandas`、`numpy`、`matplotlib`),加载历史数据,计算均线和其他技术指标,实现交易逻辑,记录和可视化交易结果。示例代码展示了如何根据均线交叉和价格条件进行开仓、止损和止盈操作。实际应用时需注意数据质量、交易成本和风险管理。
45 5
|
25天前
|
数据处理 Apache 数据库
将 Python UDF 部署到 Apache IoTDB 的详细步骤与注意事项
【10月更文挑战第21天】将 Python UDF 部署到 Apache IoTDB 中需要一系列的步骤和注意事项。通过仔细的准备、正确的部署和测试,你可以成功地将自定义的 Python UDF 应用到 Apache IoTDB 中,为数据处理和分析提供更灵活和强大的支持。在实际操作过程中,要根据具体情况进行调整和优化,以确保实现最佳的效果。还可以结合具体的代码示例和实际部署经验,进一步深入了解和掌握这一过程。
23 2
|
1月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
1月前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
42 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
1月前
|
XML JSON Ubuntu
Python实用记录(十五):PyQt/PySide6打包成exe,精简版(nuitka/pyinstaller/auto-py-to-exe)
本文介绍了使用Nuitka、PyInstaller和auto-py-to-exe三种工具将Python的PyQt/PySide6应用打包成exe文件的方法。提供了详细的安装步骤、打包命令和参数说明,适合新手学习和实践。
324 0
|
6月前
|
Python
Python打包成可执行文件
Python打包成可执行文件
122 7