一键式Excel分词统计工具:如何轻松打包Python脚本为EXE

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE

  • 写在最前面
  • 需求分析
    • 直接用Python打包为什么大?为什么要使用conda环境?
  • 将Python脚本打包为一个独立的应用程序
    • 1. 编写Python脚本:初步功能实现
    • 2. 初步图形用户界面(GUI)
    • 功能优化
    • 新建一个库,然后打包脚本
      • 再次运行代码
    • 脚本打包为.exe文件(记得先关闭windows防火墙,否则会被拦截)
      • Pyinstaller参数大全
    • 测试:运行.exe文件
    • 发送.exe文件
    • 需要发送的文件:
      • 朋友如何运行的指南:
      • 注意事项:
  • 其他:一些报错及解决
    • 报错1: The 'pathlib' package is an obsolete backport of a standard library package and is incompatible with PyInstaller. Please remove this package (located in D:\program\anaconda3\Lib\site-packages) using
    • 报错2:File "C:\Users\Yu\.conda\envs\newenv\lib\site-packages\win32ctypes\core\ctypes\_util.py", line 39, in check_null

写在最前面

最近,表姐遇到了一个挑战:需要从Excel文件中统计出经过分词处理的重复字段,但由于数据隐私问题,这些Excel文件不能外传。这种情况下,直接使用Excel内置功能好像是行不通的,需要借助Python脚本来实现。

为了解决这个问题,我写了一个简单的数据分析和自动化办公脚本,以方便使用。想象一下,即使电脑上没有安装Python,也能通过一个简单的EXE文件轻松完成工作,这是多么方便!

因此,我决定不仅要写出这个脚本,还要学会如何将其打包成一个独立的EXE文件。这样,无需Python环境的电脑也能直接运行它。

(ps:高估自己了,各种配置环境加一起,加上解决各种报错,完成时间:3h
参考这篇文档,预计完成时间:20min左右,因为新建conda环境、打包都需要时间

需求分析

让我们先来看看这个工具的基本和高级功能:

基础功能

  • 读取Excel文件。
  • 进行分词处理。
  • 统计词频,并保存结果。

优化功能

  1. 文件预览:在图形用户界面(GUI)中添加了一个部分,用以展示所选Excel文件的前五行数据。
  2. 字段选择自由度:增加了一个下拉菜单,让用户可以自由选择要进行分词统计的字段。
  3. 错误处理:在处理数据之前,我添加了一些检查程序来确保用户已正确选择了字段。
  4. 智能命名:保存文件时,默认文件名将设置为选定字段的名称,简化了操作过程。

通过这些功能的优化,用户可以更加方便快捷地完成他们的任务。

接下来,我将分享打包Python脚本为EXE文件的具体步骤,让您也能轻松制作出自己的工具。

直接用Python打包为什么大?为什么要使用conda环境?

参考:https://blog.csdn.net/libaineu2004/article/details/112612421

在压缩打包之前,先简单说一下为什么Python打包过大?

Python打包exe,不但体积大而且运行奇慢。解释型语言大都是这个样子,只不过Python尤其突出。要解决大而慢,只能用编译型语言,如C,C++,甚至VB都好很多,体积最小的是汇编。

此外,还有知乎大佬说是因为“Anaconda里内置了很多库,打包的时候打包了很多不必要的模块进去,要用纯净的Python来打包。”

所以我们可以模拟一个新环境,其中只安装我们本次打包所必要的工具包即可。

那最适合的就是——虚拟环境了!

现在让我们正式开始吧 !

将Python脚本打包为一个独立的应用程序

要创建一个可以在没有Python环境的电脑上运行的程序,我们需要将Python脚本打包为一个独立的应用程序。步骤如下:

  1. 编写Python脚本:首先,需要一个完整的Python脚本,它能够读取Excel文件、进行分词和词频统计,并保存结果。

  2. 图形用户界面(GUI):为了更可以方便地使用这个程序,可以创建一个简单的图形用户界面,其中包括文件上传、字段选择和一个按钮来生成结果。

  3. 打包为可执行文件:使用诸如PyInstaller或cx_Freeze等工具,将Python脚本和所有必要的库打包为一个可执行文件(.exe)。这样,就不需要安装Python环境。

  4. 分发应用程序:将生成的.exe文件发送给朋友,她可以在自己的电脑上直接运行它。

1. 编写Python脚本:初步功能实现

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第1张图片

2. 初步图形用户界面(GUI)

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第2张图片

功能优化

  1. 选择文件后预览表格的前五行:在GUI中添加一个部分来显示所选Excel文件的前五行数据。
  2. 自由选择对Excel的哪个字段进行统计:添加一个下拉菜单以选择要统计的特定字段。
  3. 添加错误处理:在处理数据之前,添加一些检查来确保用户已正确选择列。
  4. 保存的文件名默认为字段名称:在保存文件对话框中,将默认文件名设置为选定字段的名称。

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第3张图片

新建一个库,然后打包脚本

当使用 PyInstaller 将 Python 脚本打包为可执行文件(.exe)时,PyInstaller 会尝试包含脚本运行所需的所有依赖库。这通常意味着它会将目前 Python 环境中与脚本相关的库打包进可执行文件中。然而,这并不意味着 PyInstaller 会打包 Anaconda 环境中的所有库,而只是打包那些脚本实际依赖的库。

在拥有大量库的环境中使用 PyInstaller 可能会导致一些问题,如可执行文件体积过大或打包时间过长。如下所示(我不清楚为啥他会想打包tensorflow):

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第4张图片

因此,创建一个新的、只包含必需库的环境,是确保打包过程顺利进行的好方法。以下是创建新环境并在其中运行 PyInstaller 的步骤:

  1. 创建新的 Conda 环境

    conda create --name newenv python=3.8  # 可以选择合适的Python版本
    
  2. 激活新环境

    conda activate newenv
    

或者是

activate newenv
  1. 在新环境中安装必需的包
    • 如果和我一样,使用的是 Anaconda,那么 pandas 和 tkinter(作为 Python 的一部分)通常已经预装在 Anaconda 环境中。
    • 所以,安装 PyInstaller:
      pip install pyinstaller
      
      一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第5张图片
    • 然后,安装脚本依赖的其他库(例如 pandas, jieba 等):
      pip install jieba
      
      pip install openpyxl
      

再次运行代码

在 Visual Studio Code (VSCode) 中切换 Conda 环境,并运行 Python 文件的步骤如下:

  1. 打印python解释器绝对路径:在cmd中激活刚配置的 Conda 环境,方便后续在vscode中添加。可以使用 which 命令(在 Unix 或类 Unix 系统上,如 Linux 或 macOS)或 where 命令(在 Windows 上)来查找 Python 解释器的绝对路径。

    • 在 Unix 或类 Unix 系统上:

      which python
      
    • 在 Windows 系统上:

      where python
      

    (第一个就是,复制这个路径)
    在这里插入图片描述

  2. 选择 Python 解释器:打开想要运行的 .py 文件,VSCode 允许选择用于运行 Python 脚本的解释器。可以通过以下两种方式之一选择解释器:

    • 命令面板

      • Ctrl+Shift+P 打开命令面板。
      • 输入并选择 Python: Select Interpreter
      • 从列表中选择 Conda 环境。Conda 环境通常标有 conda 字样,并显示在环境名称旁边。
    • 状态栏

      • 在 VSCode 窗口的底部状态栏中,可以看到当前选定的 Python 解释器。点击这个部分可以打开解释器的选择列表。
      • 从列表中选择 Conda 环境。
        一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第6张图片
  3. 运行 Python 文件

    • 可以直接点击编辑器上方工具栏中的“运行”按钮(通常是一个绿色三角形图标)来运行当前的 Python 文件。
    • 或者,您也可以右键点击编辑器中的代码,然后选择 Run Python File in Terminal

确保已在 VSCode 中安装了 Python 扩展(由 Microsoft 提供),这样才能更好地支持 Python 开发,并且可以让更容易地切换 Python 解释器。

如果 Conda 环境没有出现在解释器列表中,可能需要检查一下 VSCode 的设置和 Conda 环境是否已正确配置。在某些情况下,重新启动 VSCode 或手动添加解释器路径也可以解决问题。

脚本打包为.exe文件(记得先关闭windows防火墙,否则会被拦截)

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第7张图片

  1. vscode顶栏点击 【查看】,选择【终端】 ,打开即可;
    英文版的是【view】,选择【terminal】
    (记得切换conda环境!!我这里就没切换对,所以还是默认的conda,打包的文件贼大。)
    (可以尝试下面那种方法,感觉更容易成功)
    一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第8张图片
  2. 或者直接在cmd命令行中运行,记得改成绝对路径。并且记得将./test/test.py替换为自己的脚本路径的文件名
pyinstaller --onefile -w d://Users//Yu//Desktop//CSDN//test//test.py

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第9张图片

代码运行时间较长,不要慌是正常的。

终于成功了呜呜呜

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第10张图片

Pyinstaller参数大全

通过这种方法,PyInstaller 会在新环境中查找脚本的依赖,并只打包这些依赖,从而避免不必要的库被包含进可执行文件中。

注意:-w是指程序启动的时候不会打开命令行。如果不加-w的参数,就会有黑洞洞的控制台窗口出来。比如在刚才的脚本里我加一行print(‘Hello World!’),那么就不要放-w参数了,不然运行会报错,毕竟Hello World!需要在命令行里打印出来。此外,-w参数在GUI界面时非常有用。

一些其他参数如下:

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第11张图片

测试:运行.exe文件

根据 PyInstaller 日志,可执行文件(EXE)已成功创建。

日志显示:“Copying bootloader EXE to C:\Windows\System32\dist\test.exe”,这意味着 EXE 文件名为 test.exe,位于 C:\Windows\System32\dist\ 目录下。

不过,通常,我们不建议在系统目录(如 System32)中创建或存储自己的文件,因为这可能导致权限问题或潜在的系统安全风险。可以将项目保存在非系统目录(如用户目录或其他工作目录中)并在那里运行 PyInstaller。

发送.exe文件

这将在dist目录下创建一个可执行文件,可以将这个文件发送给朋友。

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第12张图片
将通过 PyInstaller 创建的单文件(--onefile)可执行程序(EXE)发送给朋友时,通常只需要发送该 EXE 文件本身。单文件模式意味着所有必要的依赖都被打包进了一个可执行文件中,因此不需要额外的文件。

需要发送的文件:

  • test.exe 文件:在 C:\Windows\System32\dist\ 目录下找到的 test.exe 文件。

朋友如何运行的指南:

  1. 复制文件

    • test.exe 文件复制到电脑上。建议保存到易于访问的位置,如桌面或特定的工作文件夹。
  2. 运行程序

    • 双击 test.exe 文件即可运行程序。如果安全警告弹窗出现(这在第一次运行时很常见),请选择“运行”或类似选项以继续。
  3. 使用应用

    • 根据程序设计,可以直接通过图形用户界面进行交互,例如上传 Excel 文件、选择要分析的列等。
  4. 保存和查看结果

    • 程序处理完数据后,提供了保存结果的选项。根据程序设计,需要选择保存位置或直接查看结果。
  5. 关闭程序

    • 完成操作后,可以正常关闭程序。

注意事项:

  • 如果朋友的电脑上安装有安全软件或防病毒程序,可能会出现阻止运行的情况。这是因为安全软件有时会错误地将新的或未知的 EXE 文件标记为潜在威胁。如果出现这种情况,请确保他们了解该文件是安全的,并可能需要将其添加到防病毒软件的白名单中。

  • 确保朋友了解该程序的来源是可信赖的。不建议从未经验证的来源运行 EXE 文件,因为这可能会带来安全风险。

通过这种方式,朋友即使在没有 Python 环境的情况下也可以轻松运行这个程序。

完美!nice!!!

其他:一些报错及解决

报错1: The ‘pathlib’ package is an obsolete backport of a standard library package and is incompatible with PyInstaller. Please remove this package (located in D:\program\anaconda3\Lib\site-packages) using

conda remove

then try again.


遇到这个错误表明在尝试使用 PyInstaller 打包脚本时存在一个问题:pathlib 包与 PyInstaller 不兼容。pathlib 是 Python 3.4 及更高版本的标准库的一部分,但在更早的 Python 版本中它是一个第三方包。由于系统中安装了旧版的 pathlib 包,PyInstaller 无法正常工作。

要解决这个问题,请按照错误消息中提供的建议操作:

  1. 打开命令提示符或终端。
  2. 使用 condapip 移除 pathlib 包。根据您的错误消息,您应该使用 conda
    conda remove pathlib
    
  3. 移除完成后,再次尝试使用 PyInstaller 打包脚本:
    pyinstaller --onefile ./test/test.py
    

如果未使用 conda 管理您的 Python 环境,而是使用 pip,则可以尝试使用以下命令:

pip uninstall pathlib

请确保在适用于 Python 环境的命令行界面中执行这些命令。

例如,如果安装路径不在C盘,那么需要命令提示符的管理员权限,才可以成功运行这个命令。

一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第13张图片

报错2:File “C:\Users\Yu.conda\envs\newenv\lib\site-packages\win32ctypes\core\ctypes_util.py”, line 39, in check_null

raise make_error(function, function_name)

OSError: [WinError 225] 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。


遇到的错误消息 “WinError 225: 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件” 通常与操作系统的安全设置有关。这个问题可能是由以下几个原因引起的:

  1. 安全软件或防病毒程序的干预:某些安全软件或防病毒程序可能会错误地将您的 Python 脚本或由 PyInstaller 创建的 EXE 文件识别为恶意软件。这可能导致在尝试创建或执行这些文件时遇到阻碍。

  2. Windows Defender 的保护机制:Windows Defender 可能会阻止某些被认为不安全的操作,尤其是当它检测到文件可能包含恶意代码时。

为了解决这个问题,可以尝试以下几个步骤:(最快捷的是第四个~但是单独使用没有用,必须要关闭Windows Defender)
一键式Excel分词统计工具:如何轻松打包Python脚本为EXE_第14张图片

  1. 检查文件是否确实安全:首先,请确保您的脚本和所依赖的库都是从可信来源获取的,确保它们没有潜在的安全风险。

  2. 将文件加入排除列表:如果您确定文件是安全的,您可以尝试将其添加到您的防病毒软件或 Windows Defender 的排除列表中。这样,安全软件就不会阻止这些文件的创建和运行。

    • 在 Windows Defender 中,您可以通过“设置” > “更新与安全” > “Windows 安全中心” > “病毒与威胁防护” > “病毒与威胁防护设置”管理设置,并添加排除。
  3. 暂时禁用安全软件:在创建 EXE 文件的过程中,您可以暂时禁用安全软件。请确保在完成操作后重新启用它。

  4. 以管理员身份运行:尝试以管理员身份运行您的命令提示符或 PyInstaller。右键点击命令提示符图标,选择“以管理员身份运行”。

  5. 更新 PyInstaller:确保您使用的是 PyInstaller 的最新版本,因为旧版本有时会引发安全软件的误报。

  6. 咨询专业人士:如果您不确定如何操作,或者担心可能会对系统安全造成风险,建议咨询 IT 专业人士的帮助。

请务必在进行这些操作时谨慎行事,确保不会误关闭必要的安全保护措施。

你可能感兴趣的:(蓝桥杯python,#,实践,excel,python,开发语言,经验分享,笔记,学习,生活)