Пожалуйста, помогите мне, как сохранить сценарии в одной папке, так как я столкнулся с проблемой при импорте Script1 внутри Script2. Ниже приведены два скрипта.

Script1 : Переменная.sikuli

PID = "r'C:\Program Files (x86)\Microsoft Office\Office14\outlook.exe'"

Когда я сохранил скрипт (Variable.sikuli), по умолчанию он создаст папку «Variable.sikuli» внутри этих «Variable.py» и «Variable.html».

Script2 : openMO.sikuli

def openMO():
    openApp(PID) # PID will taken from Variable.sikuli
openMO()

Когда я сохранил скрипт (openMO.sikuli), по умолчанию он создаст папку «openMO.sikuli» внутри этих «openMO.py» и «openMO.html».

Теперь мои вопросы:

  1. Как сохранить два скрипта в одной папке?
  2. Как импортировать Variable.sikuli в openMO.sikuli?
0
Maheshwari 20 Фев 2015 в 10:13

2 ответа

Я не думаю, что вы должны или можете помещать несколько скриптов Sikuli в одну папку, чтобы сделать их видимыми друг для друга. Как правило, каталоги/папки, содержащие файлы .sikuli, которые вы хотите импортировать, должны находиться в sys.path. Sikuli автоматически находит другие скрипты Sikuli в том же каталоге, когда они импортируются. Ваш импортированный сценарий должен содержать (в качестве первой строки) следующее утверждение:

from sikuli import * 

Это необходимо для того, чтобы среда Python знала классы, методы, функции и глобальные имена Sikuli.

Ниже приведен пример

# on Windows
myScriptPath = "c:\\someDirectory\\myLibrary"
# on Mac/Linux
myScriptPath = "/someDirectory/myLibrary"

# all systems
if not myScriptPath in sys.path: sys.path.append(myScriptPath)

# supposing there is a myLib.sikuli
import myLib

# supposing myLib.sikuli contains a function "def myFunction():"
myLib.myFunction() # makes the call

Дополнительная информация доступна здесь .

0
Eugene S 21 Фев 2015 в 06:08

Возможно, ответ немного запоздал, но если вы хотите импортировать такие вещи, как путь к другому файлу, вы также можете попробовать использовать глобальную переменную.

Не рекомендуется помещать несколько скриптов в одну папку .sikuli.
Если ваши скрипты/программы станут больше, это может стать настоящим беспорядком.

С помощью глобальной переменной вы создаете переменную, которую можно использовать во всем сценарии.
Когда вы импортируете файл в python, он сразу же запускает класс и устанавливает переменные.
Если вы определяете глобальную переменную в сценарии A, а затем позволяете сценарию B импортировать сценарий A. Тогда сценарий B также знает, как выглядят глобальные переменные сценария A.

Чтобы установить или использовать глобальную переменную в определении, вы должны сначала вызвать ее, используя: "global variableName"

У меня есть пример кода ниже, который может прояснить ситуацию.

Файл: BrowserPath.sikuli

# Define a Global variable 
PathFireFox = ''

class Fire():
    def __init__(self):
        global PathFireFox
        PathFireFox = r"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"

# Run Fire()
Fire()

Файл: BrowserMain.sikuli

# Import other class. 
from BrowserPath import *

class Main():
    def __init__(self):
        global PathFireFox
        App.open(PathFireFox)

# Run Main class 
Main()
0
Tenzin 27 Мар 2015 в 20:09