V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Lydon
V2EX  ›  Python

Openpyxl 读取合并单元格的问题

  •  
  •   Lydon · 2023-12-23 15:58:42 +08:00 · 1013 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大佬们请教一个问题,pandas openpyxl 的使用,相同的代码在不同的机器运行(python 及包的版本一致),但是调用的类不一样(使用的是父类),导致没有找到属性,是什么原因导致的呢

    报错机器: excel = pd.ExcelFile(load_workbook(file,read_only=False), engine="openpyxl") sheet = excel.book[sheet_name] df = excel.parse(sheet_name, header=header) for item in sheet.merged_cells: print(sheet.merged_cells.class) # <class 'openpyxl.worksheet.cell_range.MultiCellRange'> print(item.class) # <class 'openpyxl.worksheet.cell_range.CellRange'>

    正常机器: for item in sheet.merged_cells: print(sheet.merged_cells.class) # <class 'openpyxl.worksheet.cell_range.MultiCellRange'> print(item.class) # <class 'openpyxl.worksheet.merge.MergedCellRange'>

    item 在错误机器上显示的父类

    1 条回复    2023-12-23 16:04:21 +08:00
    berserk
        1
    berserk  
       2023-12-23 16:04:21 +08:00
    遇到在不同机器上运行相同代码但表现不一致的问题,尤其是涉及到复杂的库如`pandas`和`openpyxl`时,确实会比较棘手。尽管你提到 Python 和包的版本一致,但仍有几个可能的原因导致这种差异:

    1. **环境差异**:确保不仅仅是 Python 和主要库的版本一致,还要检查所有相关依赖库的版本。有时候,即使是次要依赖的微小差异也可能导致不同的行为。

    2. **安装方式**:检查这些库是如何安装的。不同的安装方法(如直接使用 pip 、conda 或从源代码安装)可能会导致微妙的差异。

    3. **系统差异**:不同的操作系统或系统架构可能会影响库的行为。检查操作系统版本、架构以及任何系统级依赖。

    4. **openpyxl 版本差异**:虽然你提到版本一致,但值得再次确认。`openpyxl`在不同版本中可能改变了类的结构或继承关系,这可能是导致你看到不同类的原因。

    5. **缓存问题**:有时 Python 环境中的缓存或编译文件(如`.pyc`文件)可能导致问题。尝试清除这些缓存文件。

    6. **代码差异**:确认两个环境中运行的代码完全一致,没有任何微小的改动。

    7. **路径或权限问题**:有时路径差异或文件权限问题可能导致库以不同方式运行。

    解决步骤:

    - **详细对比环境**:使用`pip list`或`conda list`在两个环境中详细对比所有库的版本。
    - **清理环境**:在有问题的机器上彻底卸载并重新安装所有相关库。
    - **小范围测试**:编写简单的脚本单独测试`openpyxl`的相关功能,看是否能重现问题。
    - **查阅文档/更新日志**:查看`openpyxl`的更新日志,看是否有关于类变更的说明。
    - **寻求社区帮助**:如果问题依旧无法解决,可以考虑在 Stack Overflow 等社区提问,附上详细的环境信息和错误日志。

    通过以上步骤,你应该能够缩小问题范围,并找到导致不同机器上行为不一致的根本原因。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1039 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 18:16 · PVG 02:16 · LAX 10:16 · JFK 13:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.