Python 从*.exe或*.py运行时,win32com具有不同的行为

Python 从*.exe或*.py运行时,win32com具有不同的行为,python,pywin32,win32com,Python,Pywin32,Win32com,我有一个同事开发的Python项目,其中win32com用于控制应用程序:Vector中的CANoe 当他从PyCharm(2019.2.5)运行*.py脚本时,一切正常,如果他使用auto py to exe将python脚本转换为*.exe,然后他执行*.exe,一切正常,在这两种情况下,脚本都工作得非常好 现在的问题是:如果我试图运行PyCharm(2020.1.2)中的*.py脚本,模块win32com将引发异常: raise AttributeError("'%s' obje

我有一个同事开发的Python项目,其中win32com用于控制应用程序:Vector中的CANoe

当他从PyCharm(2019.2.5)运行*.py脚本时,一切正常,如果他使用auto py to exe将python脚本转换为*.exe,然后他执行*.exe,一切正常,在这两种情况下,脚本都工作得非常好

现在的问题是:如果我试图运行PyCharm(2020.1.2)中的*.py脚本,模块win32com将引发异常:

raise AttributeError("'%s' object has no attribute '%s'" % (repr(self), attr))
AttributeError: '<win32com.gen_py.CANoe 11.0 Type Library.ITestEnvironment instance at 0x2039251561776>' object has no attribute 'TestModules'
raiseAttributeError(“%s”对象没有属性“%s”)(repr(self),attr))
AttributeError:“”对象没有属性“TestModules”
从我检查的内容来看,COM库有2个dispinterface:IteStenEnvironment和IteStenEnvironment2,只有IteStenEnvironment2具有属性TestModules,在我的例子中,脚本似乎没有考虑正确的接口

如果我使用auto-py-to-exe将python脚本转换为*.exe,然后执行*.exe,那么一切都可以正常工作。如果他将脚本转换为*.exe,然后我在我的电脑上运行它,或者我将脚本本地转换为*.exe,然后在我的电脑上运行它,在这两种情况下,脚本的输出是相同的

我试过:

  • 安装与他使用的PyCharm相同的版本
  • 从Visual Studio 2017运行代码
  • 将pywin32更新至最新版本(228)
在所有情况下,结果都是一样的

我使用的Python版本与他使用的相同:Py3.6.7


有人知道为什么win32com从*.exe或*.py运行时有不同的行为,以及为什么它在不同的PC上有不同的行为吗?

本网站上的问题应该包含一个(最小、完整和可验证的示例)。如果您怀疑像您在标题中所写的那样存在一般性问题,请尝试使用最小的COM库并改进该问题。有可能的是,当你有一个MCVE的时候,你也有了答案,但是你可以发布一个好的问题和一个好的答案。@V-R在我看来,在这种情况下,不需要代码示例。问题的主要思想是:如果其他人在从*.exe或.py执行win32com时遇到这种行为,即使是在使用任何其他COM库时也会遇到这种行为。本网站上的问题应包含(最小、完整且可验证的示例)。如果您怀疑像您在标题中所写的那样存在一般性问题,请尝试使用最小的COM库并改进该问题。有可能的是,当你有一个MCVE的时候,你也有了答案,但是你可以发布一个好的问题和一个好的答案。@V-R在我看来,在这种情况下,不需要代码示例。问题的主要思想是:如果其他人在从*.exe或.py执行win32com时遇到这种行为,即使是在使用任何其他COM库时。