2017-08-21 15 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 

でコンテキストを追加してください。

+1

これは完璧に、ありがとう!私は書いた: 'Zk = win32com.client.Dispatch( 'zkemkeeper.ZKEM.1'、clsctx = pythoncom.CLSCTX_LOCAL_SERVER)' – Dayana

関連する問題