You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pytest结合psutil与xlwings运行异常问题求助

xlwings + pytest + psutil 共存导致Windows致命异常(0x800706ba)

我在Stack Overflow上找到类似问题但无人解答,以下是更简洁的问题复现步骤:

创建名为test_file.py的文件,内容如下:

import psutil
import xlwings

def test() -> None:
    my_function()

def my_function() -> None:
    # 创建新工作簿
    wb = xlwings.Book()
    # 保存
    wb.save('test.xlsx')
    # 关闭
    wb.close()

    # 清理僵尸进程
    for proc in psutil.process_iter():
        if proc.name() == "EXCEL.EXE":
            proc.kill()


if __name__ == "__main__":
    my_function()

直接执行python test_file.py一切正常,但使用pytest运行单元测试时,出现错误:

test_file.py Windows fatal exception: code 0x800706ba

完整回溯信息:

File "C:\Users\....\Desktop\so\test_file.py", line 6 in test
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\python.py", line 195 in pytest_pyfunc_call
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\python.py", line 1789 in runtest
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 167 in pytest_runtest_call
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 260 in <lambda>
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 339 in from_call
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 259 in call_runtest_hook
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 220 in call_and_report
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 131 in runtestprotocol
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\runner.py", line 112 in pytest_runtest_protocol
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\main.py", line 349 in pytest_runtestloop
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\main.py", line 324 in _main
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\main.py", line 270 in wrap_session
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\main.py", line 317 in pytest_cmdline_main
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_callers.py", line 39 in _multicall
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_manager.py", line 80 in _hookexec
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\pluggy\_hooks.py", line 265 in __call__
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\config\__init__.py", line 167 in main
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Lib\site-packages\_pytest\config\__init__.py", line 190 in console_main
  File "C:\Users\....\AppData\Local\Programs\Python\Python311\Scripts\pytest.exe\__main__.py", line 7 in <module>
  File "<frozen runpy>", line 88 in _run_code
  File "<frozen runpy>", line 198 in _run_module_as_main

环境版本:

  • Python 3.11.1
  • xlwings==0.28.6
  • pytest==7.2.2
  • psutil==5.9.4

该问题仅在三者共存时出现,单独任意两者组合均无法复现。

尝试过使用xlwings上下文管理器写法,代码如下:

import xlwings

def test() -> None:
    my_function()

def my_function() -> None:
    with xlwings.App(visible=True):
        # 创建新工作簿
        wb = xlwings.Book()
        # 保存
        wb.save('test.xlsx')
        # 关闭
        wb.close()


if __name__ == "__main__":
    my_function()

直接执行脚本正常,但用pytest运行时仍报完全相同的错误。

内容的提问来源于stack exchange,提问作者IHopeItWontBeAStupidQuestion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:07:53