gpt4 book ai didi

python - win32com.client.Dispatch + Cherrypy = CoInitialize 尚未调用

转载 作者:太空狗 更新时间:2023-10-30 02:10:48 27 4
gpt4 key购买 nike

以下代码运行良好,但如果从 CherryPy 应用程序方法执行时会失败,并显示错误消息 CoInitialize has not been called:

import win32com.client
xl = win32com.client.Dispatch("Excel.Application")
xl.quit()

This post建议一个适合我的解决方案:

import pythoncom
pythoncom.CoInitialize()

我问一个我已经有解决方案的问题的原因是 (1) 我想知道我在做什么(而不是仅仅因为我看到它工作过一次而这样做) (2) 我不想冒险错过一些重要的东西(阅读 this post 让我觉得我错过了一些东西。)

我找不到关于 pythoncom.CoInitialize() 的任何文档,而 pythoncom 的来源是以下三行,它们对我没有帮助(也没有 Eclipse+pydev 说该方法不存在):

# Magic utility that "redirects" to pythoncomxx.dll
import pywintypes
pywintypes.__import_pywin32_system_module__("pythoncom", globals())

最佳答案

我记不太清了,因为我去年没有使用 COM,但我想您必须在使用它的每个线程中初始化 COM(同样,我不确定每个 COM 隔间)。由于 CherryPy 是线程服务器,您的请求由不同的线程处理,而不是您引导的线程。所以我建议您在引导例程中尝试以下操作:

import pythoncom


def onThreadStart(threadIndex):
pythoncom.CoInitialize()

cherrypy.engine.subscribe('start_thread', onThreadStart)

关于python - win32com.client.Dispatch + Cherrypy = CoInitialize 尚未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745617/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com