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

最后成功了。


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

相关文章
|
4月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的商城管理系统源码+运行步骤
基于Python+Vue开发的商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的网上商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
128 7
|
5月前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
24天前
|
人工智能 索引 Python
[oeasy]python094_使用python控制音符列表_midi_文件制作
本文介绍了如何使用Python控制音符列表制作MIDI文件。首先回顾了列表下标索引(正数和负数)的用法,接着通过`mido`库实现MIDI文件生成。以《两只老虎》为例,详细解析了代码逻辑:定义音高映射、构建旋律列表、创建MIDI文件框架,并将音符插入音轨。还探讨了音符时值与八度扩展的实现方法。最终生成的MIDI文件可通过不同平台播放或编辑。总结中提到,此技术可用于随机生成符合调性的旋律,同时引发对列表其他实际应用的思考。
45 5
|
3月前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
202 69
|
3月前
|
Shell 开发者 Docker
Python文件打包:一站式指南
本文深入探讨Python文件打包的各种方法,从基础的zip和tar工具到高级的setuptools、PyInstaller、cx_Freeze等,涵盖Docker镜像、虚拟环境及自包含可执行文件的打包方式。通过示例代码与详细解析,帮助开发者根据项目需求选择合适的打包方案,提升代码分发与部署效率。内容全面,适合各水平读者学习参考。
213 7
|
4月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的反诈视频宣传管理系统源码+运行步骤
基于Python+Vue开发的反诈视频宣传管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的反诈宣传管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
61 6
|
4月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的家具商城管理系统源码+运行步骤
基于Python+Vue开发的家具商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的家具商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
72 8
|
4月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的婚恋交友管理系统源码+运行步骤+课程作品
基于Python+Vue开发的婚恋交友管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的婚恋相亲交友系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习问题可以留言哦
88 9
|
4月前
|
前端开发 JavaScript 关系型数据库
基于Python+Vue开发的体育用品商城管理系统源码+运行步骤+课程设计
一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的体育用品销售商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
68 4
|
4月前
|
存储 算法 文件存储
探秘文件共享服务之哈希表助力 Python 算法实现
在数字化时代,文件共享服务不可或缺。哈希表(散列表)通过键值对存储数据,利用哈希函数将键映射到特定位置,极大提升文件上传、下载和搜索效率。例如,在大型文件共享平台中,文件名等信息作为键,物理地址作为值存入哈希表,用户检索时快速定位文件,减少遍历时间。此外,哈希表还用于文件一致性校验,确保传输文件未被篡改。以Python代码示例展示基于哈希表的文件索引实现,模拟文件共享服务的文件索引构建与检索功能。哈希表及其分布式变体如一致性哈希算法,保障文件均匀分布和负载均衡,持续优化文件共享服务性能。

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等