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,
)

最后成功了。


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

相关文章
|
11天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
21天前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
51 20
|
27天前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
|
28天前
|
存储 JSON 对象存储
如何使用 Python 进行文件读写操作?
大家好,我是V哥。本文介绍Python中文件读写操作的方法,包括文件读取、写入、追加、二进制模式、JSON、CSV和Pandas模块的使用,以及对象序列化与反序列化。通过这些方法,你可以根据不同的文件类型和需求,灵活选择合适的方式进行操作。希望对正在学习Python的小伙伴们有所帮助。欢迎关注威哥爱编程,全栈路上我们并肩前行。
|
28天前
|
测试技术 Python
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
104 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
|
1月前
|
安全 数据挖掘 编译器
【01】优雅草央央逆向技术篇之逆向接口协议篇-如何用python逆向接口协议?python逆向接口协议的原理和步骤-优雅草央千澈
【01】优雅草央央逆向技术篇之逆向接口协议篇-如何用python逆向接口协议?python逆向接口协议的原理和步骤-优雅草央千澈
66 6
|
1月前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
2月前
|
计算机视觉 Python
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
76 7
|
9月前
|
Python
Python打包成可执行文件
Python打包成可执行文件
137 7

热门文章

最新文章

推荐镜像

更多