无法导入 comtypes.gen

2024-03-07

我在 Python 2.6 上安装了 comtypes 0.6.2。如果我尝试这个:

import comtypes.gen

I get:

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    import comtypes.gen
ImportError: No module named gen

其他进口产品如import comtypes and import comtypes.client不过,工作正常。

我究竟做错了什么?

从名字看来comtypes.gen是生成的代码吗?如果是这样,在导入之前我需要执行某些准备步骤吗?我是not以管理员身份登录。这会导致代码生成失败吗?

Edit:上述问题的解决是通过reload(comtypes.gen)(不过我不明白怎么做)。然而,现在from comtypes.gen import IWshRuntimeLibrary不管用。该符号应该是生成代码的一部分。那么如何生成这段代码呢?


好吧,经过一些实验,我有了解决方案。

我发现:

  1. 输入comtypes.client自动创建comtypes.gen子包。
  2. Calling comtypes.client.GetModule("MyComLib")生成一个包装器"MyComLib".

所以下面的代码为我完成了这项工作:

import os
import glob 
import comtypes.client

#Generates wrapper for a given library 
def wrap(com_lib): 
    try: 
         comtypes.client.GetModule(com_lib) 
    except: 
         print "Failed to wrap {0}".format(com_lib) 

sys32dir = os.path.join(os.environ["SystemRoot"], "system32") 

#Generate wrappers for all ocx's in system32 
for lib in glob.glob(os.path.join(sys32dir, "*.ocx")): 
    wrap(lib) 

#Generate for all dll's in system32 
for lib in glob.glob(os.path.join(sys32dir, "*.tlb")): 
    wrap(lib) 

包装了相关的 COM 库后,现在我可以正常访问 IWshRuntimeLibrary 了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法导入 comtypes.gen 的相关文章

随机推荐