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文件的目录。这里我有个习惯就是我不会先打开命令行再前往目录,我会之间打开我文件所在地,并直接在这个目录下打开命令行终端:
这样子直接就是在这个目录下的命令行终端了。
2.输入打包的指令然后回车运行:
pyinstaller --onefile your_script.py
这将使用pyinstaller
工具将Python文件打包成一个独立的可执行文件。
--onefile
选项表示将所有依赖项合并为单个可执行文件,而不是生成多个文件。
3. 打包过程可能需要一些时间,等待它完成。
一旦完成,你将在当前目录中看到一个名为dist
的文件夹。
运行可执行文件
- 进入
dist
文件夹,你将找到生成的可执行文件,名字为your_script.exe
。 - 将可执行文件复制到你想要运行它的计算机上。
- 双击可执行文件,你的Python程序将开始运行。
注意事项!!!!!
- 如果你的Python程序有外部库的依赖,你需要在打包之前确保这些库已经安装,并使用适当的命令参数告知
pyinstaller
包含它们。- 如果你的程序使用了图形界面(GUI),你可能需要在打包时指定一些特殊的选项来确保界面在打包后可以正常运行。
- 在打包过程中,
pyinstaller
将会创建一些临时文件和文件夹,你可以选择在打包完成后手动删除它们。
关于依赖项和资源(第三方库或者模块,使用到的图片,配置文件)
依赖项管理:如果你的Python程序依赖于外部库或模块,你需要确保这些依赖项在打包后可以正确访问。可以通过在打包命令中使用
--hidden-import
参数来指定需要包含的额外模块。数据文件和资源:如果你的程序需要访问数据文件或其他资源文件,例如配置文件、图像等,确保这些文件与可执行文件一起打包。你可以使用
--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)
修改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 = Noneimport 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 randoma = 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,
)
最后成功了。
希望本篇文章能够对你遇到的问题或者学习路上提供帮助!
python文件转为可执行文件(.exe)的详细步骤相关推荐
- 将Python文件打包成exe文件(超详细)
首先,我们为什么要把Python文件打包成exe文件? 因为,Python文件需要Python IDE打开 而exe,就是一个程序,双击就开了! 岂不是妙哉? 基础准备 首先,打开终端,我们要下载打包 ...
- python文件转换成exe和apk文件
将Python文件转换为Exe文件可以使用pyinstaller或cx_Freeze等工具来实现.这些工具将Python文件转换为独立的可执行文件,这样就可以在没有Python环境的计算机上运行该程序 ...
- python实现情感分析_使用python+机器学习方法进行情感分析(详细步骤)
使用python+机器学习方法进行情感分析(详细步骤) 2021-02-07 不是有词典匹配的方法了吗?怎么还搞多个机器学习方法.因为词典方法和机器学习方法各有千秋.机器学习的方法精确度更高,因为词典 ...
- 如何将python文件打包成exe格式
文章目录 如何将python文件打包成exe格式 1.安装pyinstaller image-20211217220823007 2.进入python文件的存储位置 3.生成exe文件 4.pyins ...
- linux下gcc编译c文件生成可执行文件的四个步骤
Linux下gcc编译c文件为可执行文件分为四个步骤: 分别是 预编译.编译.汇编.链接. 1.预编译( 生成 hello.i 文件) 预编译的处理规则: 1. 将所有的 "#define& ...
- PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译
在这里分享一些技巧和经验给大家.辛苦撰文分享,转载或引用请保留本文作者信息及文章链接. 作者的环境: win7+python3.5(anaconda3) 理论上,win7及以上的系统和python ...
- 将Python文件编译为exe可执行程序
Python程序py格式文件的优点是可以跨平台,但运行必须有Python环境,没有Python环境无法运行py格式文件.有没有方法,用户不同安装Python就可直接运行开发的项目工程?答案是肯定的.这 ...
- python文件打包成.exe运行文件
现在用博客的形式记载的,大概也只有IT行业一直持续吧!作为一名IT民工,没有特别多特别深的行业见解,初涉江湖,记录自己走过的路途的风景,日后回望也会觉得清晰:如果有幸能给他人一些启发或者参照,那也算是 ...
- 将python文件打包成exe文件(带附属txt文件)
一.安装pyinstaller 打包需要用到pyinstaller,打开cmd,直接输入下面语句即可: pip install pyinstaller 就像下图这样: 二.打包 2.1 文件 我想要打 ...
最新文章
- 解决存储过程中数据安全问题的四种方式
- Eclipse中 怎么让包分层级显示
- java自定义序列化_Java中的自定义国际化(i18n)
- php m pi 2,PHP学习(2)
- PHP 通用检测函数集
- [读书]看看你有没有忽视
- swagger 上传文件 参数_跟我一起学.NetCore之Swagger让前后端不再烦恼及界面自定义...
- icassp2021论文集下载
- 远程桌面提示无法连接远程计算机,远程桌面无法连接,小编教你电脑远程桌面无法连接怎么办...
- 【数学】通俗解释布丰投针实验过程、蒙特卡洛方法及python仿真代码
- 华为路由器设置静态IP
- 【天光学术】旅游管理:三清山旅游虚拟社区网络口碑分析(节选)
- 数字签名和电子签名有什么不一样?
- 使用python进行普适计算/通用计算
- AI 助力智慧城市发展 | 腾讯视觉峰会回顾
- 真香!一行代码搞定微信支付回调
- 岁月的剪影【四月尘土飞扬】
- python应用(3)svm模型预测股票涨跌
- 【Android】字体设置 Text font
- Aspose.CAD库简介