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

2024-09-27 18:07:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个同事开发的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'

从我检查的内容来看,COM库有2个dispinterface:ITestEnvironmentITestEnvironment2,只有ITestEnvironment2具有属性TestModules,在我的例子中,脚本似乎没有考虑正确的接口

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

我试过:

  • 安装与他使用的PyCharm相同的版本
  • 从Visual Studio 2017运行代码
  • 将pywin32更新至最新版本(228)

在所有情况下,结果都是一样的

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

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


Tags: tonopy版本脚本autoobject情况

热门问题