2013-03-26 43 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來解決此限制。

相關問題