Pyinstaller exe error "win32com\client\dynamic.py", line 543, in __getattr__ pywintypes.com_error: (-2147221168, 'Could not read key from registry'
Pyinstaller exe error "win32com\client\dynamic.py", line 543, in __getattr__ pywintypes.com_error: (-2147221168, 'Could not read key from registry'
我已使用 pyinstaller 将 .py 文件转换为 .exe 文件以分发给我的用户
因此我的用户没有安装 Python。
我使用 win32com 在 excel 中打开 excel & 运行 宏,这也会打开 SAP
在我的笔记本电脑上没有问题,但是当我的用户 运行 exe 文件时,控制台会短暂弹出一个错误,然后它会立即关闭。我必须在 cmd 中 运行 才能看到下面的错误
File "AutoTQCRevB.5.py", line 76, in <module>
File "win32com\client\dynamic.py", line 543, in __getattr__
pywintypes.com_error: (-2147221168, 'Could not read key from registry', None, None)
所以我检查了模块中的第 76 行
TQCmacrowb = xl.Workbooks.Open(os.getcwd()+ "\" +TQCfilename)
所以它正在尝试打开 excel 工作簿。然后我检查了 dynamic.py 行 543
中的内容
try:
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
except pythoncom.com_error as details:
if details.hresult in ERRORS_BAD_CONTEXT:
# May be a method.
self._olerepr_.mapFuncs[attr] = retEntry
return self._make_method_(attr)
raise
debug_attr_print("OLE returned ", ret)
第 543 行是 ret = self.oleobj.Invoke(retEntry.dispid,0,invoke_type,1) 所以它已经在 try & except .我不明白为什么它没有捕获到错误。
我正在使用 Python 3.8.10 32 位、Pyinstaller 4.3、pywin32 301、OS 64 位、Windows 7
我的用户正在使用 OS 64 位,Windows 10
问题已解决!
真正的问题在于 excel VBA。下面是导致错误的行
Set Connection = Appl.OpenConnectionByConnectionString("XX.XXX.XX.XXX XX", True)
Excel VBA 正在尝试连接到 SAP,但出现问题。我在下面找到了一个解决方案 link,我必须取消选中“脚本打开连接时通知”
我已使用 pyinstaller 将 .py 文件转换为 .exe 文件以分发给我的用户 因此我的用户没有安装 Python。
我使用 win32com 在 excel 中打开 excel & 运行 宏,这也会打开 SAP
在我的笔记本电脑上没有问题,但是当我的用户 运行 exe 文件时,控制台会短暂弹出一个错误,然后它会立即关闭。我必须在 cmd 中 运行 才能看到下面的错误
File "AutoTQCRevB.5.py", line 76, in <module>
File "win32com\client\dynamic.py", line 543, in __getattr__
pywintypes.com_error: (-2147221168, 'Could not read key from registry', None, None)
所以我检查了模块中的第 76 行
TQCmacrowb = xl.Workbooks.Open(os.getcwd()+ "\" +TQCfilename)
所以它正在尝试打开 excel 工作簿。然后我检查了 dynamic.py 行 543
中的内容 try:
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
except pythoncom.com_error as details:
if details.hresult in ERRORS_BAD_CONTEXT:
# May be a method.
self._olerepr_.mapFuncs[attr] = retEntry
return self._make_method_(attr)
raise
debug_attr_print("OLE returned ", ret)
第 543 行是 ret = self.oleobj.Invoke(retEntry.dispid,0,invoke_type,1) 所以它已经在 try & except .我不明白为什么它没有捕获到错误。
我正在使用 Python 3.8.10 32 位、Pyinstaller 4.3、pywin32 301、OS 64 位、Windows 7
我的用户正在使用 OS 64 位,Windows 10
问题已解决! 真正的问题在于 excel VBA。下面是导致错误的行
Set Connection = Appl.OpenConnectionByConnectionString("XX.XXX.XX.XXX XX", True)
Excel VBA 正在尝试连接到 SAP,但出现问题。我在下面找到了一个解决方案 link,我必须取消选中“脚本打开连接时通知”