【问题标题】:Python- Openpyxl works in console but fails to importPython-Openpyxl 在控制台中工作但无法导入
【发布时间】:2016-07-08 17:06:24
【问题描述】:

我在让 openpyxl 写入 Excel 文件时遇到问题,当我在 PyCharm Python 控制台中运行以下代码时,它工作正常,但是当我创建并运行 .py 文件时,我收到以下错误:

C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\Scripts\python.exe C:/Python27/virtualenv-15.0.1/virtualenv/test.py 回溯(最近一次通话最后): 文件“C:/Python27/virtualenv-15.0.1/virtualenv/test.py”,第 1 行,在 从 openpyxl 导入工作簿 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl__init__.py”,第 28 行,在 从 openpyxl.workbook 导入工作簿 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\workbook__init__.py”,第 5 行,在 从 .workbook 导入 * 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\workbook\workbook.py”,第 7 行,在 从 openpyxl.worksheet 导入工作表 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\worksheet__init__.py”,第 4 行,在 从 .worksheet 导入 * 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\worksheet\worksheet.py”,第 34 行,在 从 openpyxl.cell 导入 Cell 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\cell__init__.py”,第 4 行,在 从 .cell 导入 * 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\cell\cell.py”,第 44 行,在 从 openpyxl.styles 导入数字,is_date_format 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\styles__init__.py”,第 4 行,在 从 openpyxl.descriptors 导入 Typed 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\descriptors__init__.py”,第 4 行,在 从 .base 导入 * 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\descriptors\base.py”,第 12 行,在 从 openpyxl.xml.functions 导入元素 文件“C:\Users\David\PycharmProjects\VirtualEnv1\VirtualEnv1\lib\site-packages\openpyxl\xml\functions.py”,第 41 行,在 从 xml.etree.ElementTree 导入 ( ImportError:没有名为 etree.ElementTree 的模块 进程以退出代码 1 结束

我从https://openpyxl.readthedocs.org/en/default/index.html 安装并按照推荐使用虚拟环境。我还将 elementtree 包下载到虚拟环境,但脚本仍然失败。任何帮助将不胜感激,谢谢!

from openpyxl import Workbook

wb = Workbook()
ws1 = wb.create_sheet()
ws1.title = "worksheet1"

c = ws1['A4']

ws1['A4'] = 15

cell_range = ws1['A1':'C2']

for row in ws1.iter_rows('A1:C2'):
    for cell in row:
        print cell

wb.save('balances.xlsx')

Console run

【问题讨论】:

  • 看起来 venv 设置不正确,因为 xml.etree.ElementTree 是标准库的一部分。我对在 PyCharm 中设置 venvs 了解不多,但我认为这就是问题所在。我总是独立于任何 IDE 设置 venvs,然后相应地配置项目。
  • 是的,看起来这是 PyCharm venv 的问题......创建了一个新的,它工作得很好。谢谢!

标签: python elementtree importerror openpyxl


【解决方案1】:

通过创建新的 PyCharm 虚拟环境而不选择“继承全局站点包”复选框解决了该问题:

https://www.jetbrains.com/help/pycharm/5.0/creating-virtual-environment.html?origin=old_help

【讨论】:

    【解决方案2】:

    您的脚本在哪里使用 etree.ElementTree?这在控制台中对我很有效:

    $ virtualenv .venv
    $ . .venv/bin/activate
    $ pip install openpyxl
    
    $ tee test.py << 'EOF'
    from openpyxl import Workbook
    
    wb = Workbook()
    ws1 = wb.create_sheet()
    ws1.title = "worksheet1"
    
    c = ws1['A4']
    
    ws1['A4'] = 15
    
    cell_range = ws1['A1':'C2']
    
    for row in ws1.iter_rows('A1:C2'):
        for cell in row:
            print cell
    
    wb.save('balances.xlsx')
    
    EOF
    
    $ python test.py
    

    【讨论】:

    • 我没有在我的脚本中使用 etree.ElementTree,但是 openpyxl 脚本广泛使用它。该代码在控制台中也适用于我,但是当我保存并作为 .py 运行时遇到了问题。
    • “在控制台中”是指在 python 交互式解释器中?在我的回答中,我创建了一个文件“test.py”并运行它而没有任何错误。据我所见,您发布的代码没有使用 etree.ElementTree。
    • 没错,我所说的控制台是指交互式解释器——请参阅上面的“控制台运行”图像,它可以正常运行。我还发布了完整的错误描述,问题是调用 etree.ElementTree 时 openpyxl 失败
    猜你喜欢
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2019-04-11
    相关资源
    最近更新 更多