2017-08-21 111 views
1

我正在嘗試使用odoo 9代碼中的一個Windows DLL。 在Python類的代碼是:在Windows 10上使用Python 32位的COM錯誤64位

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,而不是內部的?

回答

1

嘗試使用

clsctx=pythoncom.CLSCTX_LOCAL_SERVER 

傳遞給調度ARGS添加上下文。

+1

它工作完美,謝謝!我寫道:'ZK = win32com.client.Dispatch('zkemkeeper.ZKEM.1',clsctx = pythoncom.CLSCTX_LOCAL_SERVER)' – Dayana

相關問題