pyinstaller|打包生成的EXE报错No module named ‘openpyxl.cell._writer‘

一、问题描述

# -*- coding: utf-8 -*-
# @Create Time : 2024/4/22 13:38
# @Edit Time : 2024/4/23 10:59
# @Author : Tim
# @File : UI.py
# @Software : PyCharm


import re
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import pandas as pd
import threading

# 新增曲目列表
SONG_NAMES = ["歌曲A", "歌曲B", "歌曲C"]

# 存储每首歌曲对应的评分
SONG_SCORES = {}


def center_window(window, width, height):
    screen_width = window.winfo_screenwidth()
    screen_height = window.winfo_screenheight()

    x = (screen_width // 2) - (width // 2)
    y = (screen_height // 2) - (height // 2)

    window.geometry(f"{width}x{height}+{x}+{y}")


def is_valid_integer(text):
    return re.match(r'^\d+$', text) and 1 <= int(text) <= 120


def save_to_excel_thread(name, age, gender, score1, score2, score3):
    data = {
        "姓名": [name],
        "年龄": [age],
        "性别": [gender],
        "歌曲A": [score1],
        "歌曲B": [score2],
        "歌曲C": [score3]
    }
    try:
        df = pd.DataFrame(data)

        # 这里假设默认当前工作目录是可写的,更健壮的实现应考虑指定路径或检查权限
        df.to_excel('data.xlsx', index=False)
        messagebox.showinfo("成功", "数据已保存到Excel文件")
    except Exception as e:
        messagebox.showerror("错误", f"保存失败: {e}")


def save_to_excel(name_entry, age_entry, gender_comb
### 如何解决Python exe打包过程中缺失的DLL文件问题 当使用 `PyInstaller` 或其他工具进行 Python 程序打包时,如果遇到 DLL 文件缺失的问题,可以采取以下措施来解决问题。 #### 选择合适的Python版本 对于某些特定的操作系统版本,如 Windows 7,建议使用兼容该操作系统的较低版本的 Python 进行打包。例如,可以选择 Python 3.8.5 的 32 位版本来进行打包工作[^2]。这有助于确保生成的可执行文件能够在目标操作系统上正常运行。 #### 修改导入方式减少依赖冲突 为了降低因模块导入而导致的潜在问题,推荐采用更精确的导入语句形式——即优先考虑使用 `from ... import ...` 而不是简单的 `import` 。后者可能会导致整个库被无差别地包含进来,增加了不必要的体积并可能引入额外的依赖项[^4]。 #### 处理特定模块错误 针对像 AkShare 打包EXE 后出现 `ModuleNotFoundError: No module named 'openpyxl.cell.writer'` 类似的错误情况,可能是由于某些子模块未能正确识别或加载所致。此时应仔细检查项目中的所有外部库及其版本是否匹配,并确认这些库已安装在用于构建的应用环境中[^3]。 #### 显式指定所需资源路径 有时即使选择了正确的解释器和调整了代码结构之后仍然会碰到找不到动态链接库的情况。这时可以通过 PyInstaller 提供的功能手动添加必要的二进制文件或者设置环境变量使它们能够被发现: - **通过命令行参数**:可以在调用 PyInstaller 时利用 `--add-binary` 参数显式指明要加入到最终发行版里的 .dll 文件的位置; ```bash python -m PyInstaller your_script.py --add-binary "path_to_dll;." ``` - **修改 spec 文件**:也可以编辑由 PyInstaller 自动生成的 `.spec` 配置文档,在其中增加相应的数据条目以囊括那些重要的支持文件; - **设定 PATH 变量**:临时扩展当前进程所使用的搜索目录列表以便于定位丢失的目标组件。 综上所述,以上几种策略结合起来往往能有效应对大多数关于缺少 dll 的挑战。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值