python - 如何将包含多个模块的 Python 脚本导入 Sikuli

标签 python sikuli

我正在尝试从 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's print_control_identifiers 方法返回(不是字符串)。此外,我需要来自 GUI 应用程序的哈希序列号,而我无法使用 Sikuli 获得该序列号,因此需要使用 Pywinauto。但是,当我尝试从 Sikuli 调用 execfile() 时,出现错误:

ImportError: no module named Pywinauto. 

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

我用来从 Sikuli 调用上面显示的 .py 文件的代码:

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

最佳答案

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

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

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

关于python - 如何将包含多个模块的 Python 脚本导入 Sikuli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15641484/

相关文章:

python - 简单的 pybind11 模块失败,没有命名模块

java - 如何更改 Sikuli 中的 Settings.MinSimilarity?

java - 启动 Sikuli 设置时出现问题

python - 从命令行运行 SikuliX 1.1.4 Python 脚本

python - 文件处理程序的日志级别与记录器的日志级别

python - 提取检测到的近似形状和边界框Mask RCNN

Python:带有 2 个样本的二维 Kolmogorov-Smirnov

python - 如何将 Numba "@vectorize"ufunc 与结构化 Numpy 数组一起使用?

java - 如何使用 Sikuli Java Standalone jar 输入文本?

automation - Sikuli 如何用于长时间等待按钮,中间可能还需要执行一些维护任务?