在Windows 10 64位

时间:2017-08-21 19:27:12

标签: python openerp odoo-9 pythoncom

我正在尝试使用odoo 9代码中的windows dll。 python类中的代码是:

import win32com.client
import pythoncom

Pythoncom.CoInitialize ()
Zk = win32com.client.Dispatch ('zkemkeeper.ZKEM.1')

当我在Windows 8(64位)上运行它时没有问题,但是当我在Windows 10(64位)上作为服务运行它时,我在日志文件中收到以下错误:

File "C: \ Python27 \ lib \ site-packages \ win32com \ client \ dynamic.py", line 85, in _GetGoodDispatch
IDispatch = pythoncom.CoCreateInstance (IDispatch, None, clsctx, pythoncom.IID_IDispatch)
Com_error: (-2147221164, 'Class not registered', None, None)
我检查了Regedit;该DLL已注册。

当我在同一台PC上安装Python 32位,并直接从控制台运行代码时,它给了我同样的错误。但是,我安装了Python 64位并运行相同的代码,它工作正常。

有人能告诉我如何用odoo作为服务修复此错误吗?有没有办法指出我在PC上安装的64位python而不是内部的?

2 个答案:

答案 0 :(得分:2)

尝试使用

添加上下文
function sum_marks($sub){--Function body--
}

传递给Dispatch的args。

答案 1 :(得分:0)

t = win32com.client.Dispatch("TDApiOle80.TDConnection")

对此不起作用。

tdc = win32com.client.Dispatch("TDApiOle80.TDConnection",clsctx=pythoncom.CLSCTX_LOCAL_SERVER)

派遣     调度,  userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)