首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >win32com分发32位版本的TestStand

win32com分发32位版本的TestStand
EN

Stack Overflow用户
提问于 2018-05-24 11:26:41
回答 2查看 435关注 0票数 0

我有一个连接到TestStand并从.seq (序列)文件中检索特定数据的python脚本。

代码语言:javascript
复制
import win32com.client
import pythoncom
TestStandEngine = win32com.client.Dispatch("TestStand.Engine")
Seqfile = TestStandEngine .GetSequenceFileEx("Seq_File.seq")
Main = Seqfile.GetSequenceByName("MainSequence") #Get's the main sequence of the file

我已经安装了测试站2014的x32和x64版本,而且脚本运行得很好。卸载x64版本(因为不需要它)后,脚本现在会出现以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\ts\Main.py", line 9, in <module>
    TestStandEngine = win32com.client.Dispatch("TestStand.Engine")
  File "C:\LegacyApp\Python_2.7\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
  File "C:\LegacyApp\Python_2.7\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
    return (_GetGoodDispatch(IDispatch, clsctx), userName)
  File "C:\LegacyApp\Python_2.7\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
com_error: (-2147221005, 'Invalid class string', None, None)

在做了一些研究之后,我想我知道是什么导致了这个问题,但我找不到解决问题的方法。

我的计算机上的-The Python分期付款是32位

代码语言:javascript
复制
>>> import platform
>>> platform.architecture()
('32bit', 'WindowsPE')

-The只安装在我的计算机上的测试站是32位版本。

-The操作系统: Windows x64位操作系统

下面是我的猜测:我认为当它发布Teststand.Engine时,它尝试使用不再安装的x64版本;我尝试了添加clsctx参数,但结果是相同的:

代码语言:javascript
复制
win32com.client.Dispatch("TestStand.Engine",clsctx=pythoncom.CLSCTX_LOCAL_SERVER)

有没有办法“强迫”它启动32位版本?如果TestStand是32位的,而Python是32位的,那么它不应该返回一个应该与python32bit一起工作的32位COM对象吗?

'Teststand.Engine‘更新:,所以在PowerShell中运行this之后,它返回了一个COM所有有效名称的列表,但是不在列表中。列表中唯一与TestStand相关的对象是TestStand.ExLauncher (我可以分派该对象,但它没有与TestStand.Engine相同的属性/用途)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-29 11:25:55

通过重新安装TestStand解决了这个问题。(我知道重新安装会解决问题,但我希望不必重新安装,因为它会影响到多个信任)

问题是,当我卸载TestStand x64版本时,卸载程序认为我将完全卸载TestStand,并且很可能在重新安装x32位版本后删除一些包含“TestStand.Engine”说明的注册表项。

票数 0
EN

Stack Overflow用户

发布于 2018-11-21 20:15:33

您是否尝试使用版本相关的接口来代替

代码语言:javascript
复制
TestStandEngine = win32com.client.Dispatch("TestStand.Engine.1")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50508191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档