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,我必须取消选中“脚本打开连接时通知”