2

Sikuli(r930)からPython(2.7)スクリプトを呼び出して、スクリプトの変数を使用しようとしています。以下はPythonコードです。

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の print_control_identifiersメソッドが返すもの(文字列ではない)であるため、キャプチャしています。また、Sikuliでは取得できないGUIアプリのハッシュシリアル番号が必要なため、Pywinautoを使用する必要があります。ただし、execfile()Sikuliから電話をかけようとすると、次のエラーが発生します。

ImportError: no module named Pywinauto. 

ドキュメントを読みましたが、Sikuli(Jython)にPythonモジュールとスクリプトを含めることができることを知っています。さらに、私が呼び出している外部.pyファイルは、独立して実行すると正常に実行されます。ステップが足りない場合、誰かに教えてもらえますか?

上記の.pyファイルをSikuliから呼び出すために使用しているコード:

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

1 に答える 1

1

あなたが抱えている当面の問題は、Jythonがあなたのモジュールを見つけることができないということです。おそらく、Pythonでインストールしたものであり、モジュールパスを共有していません。これは、 JYTHONPATH環境変数を設定することで修正できます。

ただし、Pywinautoはネイティブコードとリンクしており、これはJythonがサポートしていないものです。

サブプロセスモジュールを介してJythonから通常のPythonを呼び出すことで、この制限を回避できる場合があります。

于 2013-03-29T14:28:33.683 に答える