最近,表姐遇到了一个挑战:需要从Excel文件中统计出经过分词处理的重复字段,但由于数据隐私问题,这些Excel文件不能外传。这种情况下,直接使用Excel内置功能好像是行不通的,需要借助Python脚本来实现。
为了解决这个问题,我写了一个简单的数据分析和自动化办公脚本,以方便使用。想象一下,即使电脑上没有安装Python,也能通过一个简单的EXE文件轻松完成工作,这是多么方便!
因此,我决定不仅要写出这个脚本,还要学会如何将其打包成一个独立的EXE文件。这样,无需Python环境的电脑也能直接运行它。
(ps:高估自己了,各种配置环境加一起,加上解决各种报错,完成时间:3h
参考这篇文档,预计完成时间:20min左右
,因为新建conda环境、打包都需要时间
让我们先来看看这个工具的基本和高级功能:
基础功能:
优化功能:
通过这些功能的优化,用户可以更加方便快捷地完成他们的任务。
接下来,我将分享打包Python脚本为EXE文件的具体步骤,让您也能轻松制作出自己的工具。
参考:https://blog.csdn.net/libaineu2004/article/details/112612421
在压缩打包之前,先简单说一下为什么Python打包过大?
Python打包exe,不但体积大而且运行奇慢。解释型语言大都是这个样子,只不过Python尤其突出。要解决大而慢,只能用编译型语言,如C,C++,甚至VB都好很多,体积最小的是汇编。
此外,还有知乎大佬说是因为“Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。”
所以我们可以模拟一个新环境,其中只安装我们本次打包所必要的工具包即可。
那最适合的就是——虚拟环境了!
现在让我们正式开始吧 !
要创建一个可以在没有Python环境的电脑上运行的程序,我们需要将Python脚本打包为一个独立的应用程序。步骤如下:
编写Python脚本:首先,需要一个完整的Python脚本,它能够读取Excel文件、进行分词和词频统计,并保存结果。
图形用户界面(GUI):为了更可以方便地使用这个程序,可以创建一个简单的图形用户界面,其中包括文件上传、字段选择和一个按钮来生成结果。
打包为可执行文件:使用诸如PyInstaller或cx_Freeze等工具,将Python脚本和所有必要的库打包为一个可执行文件(.exe)。这样,就不需要安装Python环境。
分发应用程序:将生成的.exe文件发送给朋友,她可以在自己的电脑上直接运行它。
当使用 PyInstaller 将 Python 脚本打包为可执行文件(.exe)时,PyInstaller 会尝试包含脚本运行所需的所有依赖库。这通常意味着它会将目前 Python 环境中与脚本相关的库打包进可执行文件中。然而,这并不意味着 PyInstaller 会打包 Anaconda 环境中的所有库,而只是打包那些脚本实际依赖的库。
在拥有大量库的环境中使用 PyInstaller 可能会导致一些问题,如可执行文件体积过大或打包时间过长。如下所示(我不清楚为啥他会想打包tensorflow):
因此,创建一个新的、只包含必需库的环境,是确保打包过程顺利进行的好方法。以下是创建新环境并在其中运行 PyInstaller 的步骤:
创建新的 Conda 环境:
conda create --name newenv python=3.8 # 可以选择合适的Python版本
激活新环境:
conda activate newenv
或者是
activate newenv
在 Visual Studio Code (VSCode) 中切换 Conda 环境,并运行 Python 文件的步骤如下:
打印python解释器绝对路径:在cmd中激活刚配置的 Conda 环境,方便后续在vscode中添加。可以使用 which
命令(在 Unix 或类 Unix 系统上,如 Linux 或 macOS)或 where
命令(在 Windows 上)来查找 Python 解释器的绝对路径。
在 Unix 或类 Unix 系统上:
which python
在 Windows 系统上:
where python
选择 Python 解释器:打开想要运行的 .py
文件,VSCode 允许选择用于运行 Python 脚本的解释器。可以通过以下两种方式之一选择解释器:
运行 Python 文件:
Run Python File in Terminal
。确保已在 VSCode 中安装了 Python 扩展(由 Microsoft 提供),这样才能更好地支持 Python 开发,并且可以让更容易地切换 Python 解释器。
如果 Conda 环境没有出现在解释器列表中,可能需要检查一下 VSCode 的设置和 Conda 环境是否已正确配置。在某些情况下,重新启动 VSCode 或手动添加解释器路径也可以解决问题。
./test/test.py
替换为自己的脚本路径的文件名pyinstaller --onefile -w d://Users//Yu//Desktop//CSDN//test//test.py
代码运行时间较长,不要慌是正常的。
终于成功了呜呜呜
通过这种方法,PyInstaller 会在新环境中查找脚本的依赖,并只打包这些依赖,从而避免不必要的库被包含进可执行文件中。
注意:-w是指程序启动的时候不会打开命令行。如果不加-w的参数,就会有黑洞洞的控制台窗口出来。比如在刚才的脚本里我加一行print(‘Hello World!’),那么就不要放-w参数了,不然运行会报错,毕竟Hello World!需要在命令行里打印出来。此外,-w参数在GUI界面时非常有用。
一些其他参数如下:
根据 PyInstaller 日志,可执行文件(EXE)已成功创建。
日志显示:“Copying bootloader EXE to C:\Windows\System32\dist\test.exe”,这意味着 EXE 文件名为 test.exe
,位于 C:\Windows\System32\dist\
目录下。
不过,通常,我们不建议在系统目录(如 System32
)中创建或存储自己的文件,因为这可能导致权限问题或潜在的系统安全风险。可以将项目保存在非系统目录(如用户目录或其他工作目录中)并在那里运行 PyInstaller。
这将在dist
目录下创建一个可执行文件,可以将这个文件发送给朋友。
将通过 PyInstaller 创建的单文件(--onefile
)可执行程序(EXE)发送给朋友时,通常只需要发送该 EXE 文件本身。单文件模式意味着所有必要的依赖都被打包进了一个可执行文件中,因此不需要额外的文件。
test.exe
文件:在 C:\Windows\System32\dist\
目录下找到的 test.exe
文件。复制文件:
test.exe
文件复制到电脑上。建议保存到易于访问的位置,如桌面或特定的工作文件夹。运行程序:
test.exe
文件即可运行程序。如果安全警告弹窗出现(这在第一次运行时很常见),请选择“运行”或类似选项以继续。使用应用:
保存和查看结果:
关闭程序:
如果朋友的电脑上安装有安全软件或防病毒程序,可能会出现阻止运行的情况。这是因为安全软件有时会错误地将新的或未知的 EXE 文件标记为潜在威胁。如果出现这种情况,请确保他们了解该文件是安全的,并可能需要将其添加到防病毒软件的白名单中。
确保朋友了解该程序的来源是可信赖的。不建议从未经验证的来源运行 EXE 文件,因为这可能会带来安全风险。
通过这种方式,朋友即使在没有 Python 环境的情况下也可以轻松运行这个程序。
完美!nice!!!
conda remove
then try again.
遇到这个错误表明在尝试使用 PyInstaller 打包脚本时存在一个问题:pathlib
包与 PyInstaller 不兼容。pathlib
是 Python 3.4 及更高版本的标准库的一部分,但在更早的 Python 版本中它是一个第三方包。由于系统中安装了旧版的 pathlib
包,PyInstaller 无法正常工作。
要解决这个问题,请按照错误消息中提供的建议操作:
conda
或 pip
移除 pathlib
包。根据您的错误消息,您应该使用 conda
:conda remove pathlib
pyinstaller --onefile ./test/test.py
如果未使用 conda
管理您的 Python 环境,而是使用 pip
,则可以尝试使用以下命令:
pip uninstall pathlib
请确保在适用于 Python 环境的命令行界面中执行这些命令。
例如,如果安装路径不在C盘,那么需要命令提示符的管理员权限,才可以成功运行这个命令。
raise make_error(function, function_name)
OSError: [WinError 225] 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。
遇到的错误消息 “WinError 225: 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件” 通常与操作系统的安全设置有关。这个问题可能是由以下几个原因引起的:
安全软件或防病毒程序的干预:某些安全软件或防病毒程序可能会错误地将您的 Python 脚本或由 PyInstaller 创建的 EXE 文件识别为恶意软件。这可能导致在尝试创建或执行这些文件时遇到阻碍。
Windows Defender 的保护机制:Windows Defender 可能会阻止某些被认为不安全的操作,尤其是当它检测到文件可能包含恶意代码时。
为了解决这个问题,可以尝试以下几个步骤:(最快捷的是第四个~但是单独使用没有用,必须要关闭Windows Defender)
检查文件是否确实安全:首先,请确保您的脚本和所依赖的库都是从可信来源获取的,确保它们没有潜在的安全风险。
将文件加入排除列表:如果您确定文件是安全的,您可以尝试将其添加到您的防病毒软件或 Windows Defender 的排除列表中。这样,安全软件就不会阻止这些文件的创建和运行。
暂时禁用安全软件:在创建 EXE 文件的过程中,您可以暂时禁用安全软件。请确保在完成操作后重新启用它。
以管理员身份运行:尝试以管理员身份运行您的命令提示符或 PyInstaller。右键点击命令提示符图标,选择“以管理员身份运行”。
更新 PyInstaller:确保您使用的是 PyInstaller 的最新版本,因为旧版本有时会引发安全软件的误报。
咨询专业人士:如果您不确定如何操作,或者担心可能会对系统安全造成风险,建议咨询 IT 专业人士的帮助。
请务必在进行这些操作时谨慎行事,确保不会误关闭必要的安全保护措施。