2013-03-26 47 views
2

我想从Sikuli(r930)调用Python(2.7)脚本并使用脚本中的变量。下面是Python代码:我怎样才能导入一个Python脚本包含到Sikuli几个模块

import sys 
import re 
import os 
import time 
from pywinauto import application 
from SendKeys import SendKeys 
from cStringIO import StringIO 


app=application.Application() 
app.connect_(path=r'C:\Program Files\myApp\myApp.exe') 

backup = sys.stdout 

sys.stdout = StringIO()  

app.dlg.print_control_identifiers() 

out = sys.stdout.getvalue() 

sys.stdout.close() # close the stream 
sys.stdout = backup # restore original stdout 

regex = re.compile(r'(\d{8}\s*\-\s*\d{8})') 
found = re.search(regex, out) 

print found.group(0) #pass this variable to Sikuli 

我捕捉stdout,因为这是Pywinauto'sprint_control_identifiers方法返回(不是一个字符串)。另外,我需要使用Sikuli无法获得的GUI应用程序中的哈希序列号,因此需要使用Pywinauto。然而,当我尝试调用execfile()从Sikuli,我得到的错误:

ImportError: no module named Pywinauto. 

我阅读文档,我知道Sikuli(Jython的)可以包括Python模块和脚本。此外,我调用的外部.py文件在独立运行时运行成功。有人能告诉我,如果我错过了一步吗?我使用调用从Sikuli上面显示的.py文件

代码:

aScript = 'c:\\getHash_serial.py' 
execfile(aScript) 
+2

嗨Suffa,请阅读与PIL模块相同的问题 - http://stackoverflow.com/questions/13488117/not-able-to-import-pil-in-sikuli?rq=1 – SWAPYAutomation 2013-03-27 13:31:15

回答

1

您遇到眼前的问题是,Jython会找不到你的模块。可能你已经将它安装在Python下,并且它们不共享模块路径。您可以通过设置JYTHONPATH环境变量来解决此问题。

但是,Pywinauto与本机代码链接,这是Jython不支持的。

您可以通过subprocess module从Jython调用常规Python来解决此限制。

相关问题