未找到win32com com_error库

时间:2018-04-04 11:44:31

标签: python com win32com

我正在尝试使用一个使用win32com库的Python API。我正在使用该网站提供的示例代码,该代码在一台计算机上正常工作但在另一台计算机中无效。我在Windows 7上运行它。 具体来说,它在检查一些二进制文件时失败了:

import win32event
import win32com.client
from win32com.client import constants

win32com.client.gencache.EnsureModule('{51F35562-AEB4-4AB3-99E8-AC9666344B64}', 0, 4, 0)
win32com.client.gencache.EnsureModule('{4D454F08-B770-11D4-A18E-00C04F6BB385}', 0, 17, 12801)

我一直在寻找互联网但是虽然有类似的问题,我还没有找到问题的答案。 起初我虽然是因为Windows或Python发行版中有32-64位差异。我检查了两个计算机(64位Windows 7)中的Windows版本是否相同,而且我使用的是相同的Python版本。我还没有发现哪个模块对应于EnsureModule()中的代码。

我是这方面的新手,我不太了解COM对象,很遗憾我的描述不够准确。

提前致谢。

编辑:

win32com的导入效果很好。它不会返回错误,例如使用引用为可能重复的问题的代码:

from win32com.client import Dispatch
xlApp = win32com.client.Dispatch("Excel.Application")

这不会返回任何错误。

显示的确切代码和错误是:

win32com.client.gencache.EnsureModule('{51F35562-AEB4-4AB3-99E8-AC9666344B64}', 0, 4, 0)

Traceback (most recent call last):

  File "<ipython-input-2-18c1ec54bb40>", line 1, in <module>
    win32com.client.gencache.EnsureModule('{51F35562-AEB4-4AB3-99E8-AC9666344B64}', 0, 4, 0)

  File "C:\Users\jredondo\AppData\Local\Continuum\anaconda3\lib\site-packages\win32com\client\gencache.py", line 518, in EnsureModule
    module = MakeModuleForTypelib(typelibCLSID, lcid, major, minor,     progressInstance, bForDemand = bForDemand, bBuildHidden = bBuildHidden)

  File "C:\Users\jredondo\AppData\Local\Continuum\anaconda3\lib\site-packages\win32com\client\gencache.py", line 287, in MakeModuleForTypelib
    makepy.GenerateFromTypeLibSpec( (typelibCLSID, lcid, major, minor), progressInstance=progressInstance, bForDemand = bForDemand, bBuildHidden = bBuildHidden)

  File "C:\Users\jredondo\AppData\Local\Continuum\anaconda3\lib\site-packages\win32com\client\makepy.py", line 223, in GenerateFromTypeLibSpec
    tlb = pythoncom.LoadRegTypeLib(typelibCLSID, major, minor, lcid)

com_error: (-2147319779, 'Library not registered.', None, None)

我曾尝试使用不同的Python版本(32位和64位的Python 2.7和3.6)在7台不同的计算机上使用Windows 7(它应该是公司订阅的同一个发行版),其中有4台工作正常好吧,在其他三个中它返回上面描述的 com_error

我安装了与两台不同计算机相同的版本(32位Python 3.5.2),并且在第一台计算机中,两条线路都运行良好,而在第二台计算机中,只有第一台机器正常工作,第二台计算机抛出错误。对于我的意思是:

win32com.client.gencache.EnsureModule('{51F35562-AEB4-4AB3-99E8-AC9666344B64}', 0, 4, 0)
win32com.client.gencache.EnsureModule('{4D454F08-B770-11D4-A18E-00C04F6BB385}', 0, 17, 12801)

可能存在与Windows更新相关的问题。我还没有发现它与EnsureModule()中的串行代码模块完全对应。

0 个答案:

没有答案