Python COM 服务器抛出 'module' 对象没有属性 'VARIANT'

标签 python com com-server

这是一个用 Python 实现的 COM 服务器:

from win32com.server.exception import COMException
import pythoncom
import sys
import os
from string import Template
import logging
import logging.config

class Connector:
    _reg_clsctx_ = pythoncom.CLSCTX_LOCAL_SERVER
    _reg_clsid_ = "{0CE25AEB-1AFA-4DA7-97BD-F93CDBFB376C}"
    _reg_desc_ = "Python Test COM Server"
    _reg_progid_ = "Compy.Connect"
    _public_methods_ = ['Process', 'Status']
    _public_attrs_ = []
    _readonly_attrs_ = []

    def Process(self, what):
        pass

    def Status(self):
        return Template("""
        Current Directory: $dir
        Installed: $script
        PythonPATH: $pyPath
        """).substitute(dir = os.getcwd(),
                        script = os.path.abspath(__file__),
                        pyPath = sys.path)

if __name__ == '__main__':
    import win32com.server.register
    win32com.server.register.UseCommandLine(Connector)

注册正常。 当它运行时,它会导致在生产机器上发生以下情况,但在开发机器上不会发生:

>>> cc = CreateObject("Compy.Connect")
>>> cc.Status()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python26\lib\site-packages\comtypes\client\dynamic.py", line 42, in _
_call__
    return self._obj._comobj.Invoke(self._id, *args)
  File "C:\Python26\lib\site-packages\comtypes\automation.py", line 717, in Invo
ke
raise COMError(hresult, text, details)
_ctypes.COMError: (-2147352567, 'Exception occurred.', (u"Unexpected Python Erro
r: AttributeError: 'module' object has no attribute 'VARIANT'\n", u'Python COM S
erver Internal Error', None, 0L, -2147467259))
>>>

我已经安装了 comtypes 0.6.2。运行Python 2.6.6

最佳答案

VARIANT 类是在 Pywin32 build 217 中引入的。 尝试在机器上安装最新版本 它失败了。

关于Python COM 服务器抛出 'module' 对象没有属性 'VARIANT',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816383/

相关文章:

python - 多线程访问python字典

python - 列表中的随机元素

python - 我如何与 Windows 程序交互

winapi - 获取 COM 服务器的进程 ID

python - BeautifulSoup soup.prettify() 给出奇怪的输出

python - 在 cython 中使用 typedef'd 结构

com - 为什么我无法注册我的 COM DLL?

visual-c++ - 调试 DLLRegisterServer

python - _com_interfaces_ 有什么作用?