SikuliX + python, получая странную ошибку NameEr после редактирования импортированного модуля - PullRequest
0 голосов
/ 29 января 2020

Я обнаружил странное поведение SikuliX + Python. Мое основное приложение работает без проблем ... Но, если я делаю какие-либо изменения в импортированном модуле, я получаю ошибку

NameError: имя 'myLib' не определено

Если я перезапускаю свою программу SikuliX, снова все в порядке ... Это очень раздражающая ошибка .. Я даже не знаю, как справиться с этим .. Я опишу свою ситуацию более подробно:

....... .................................................. ..............

У меня есть папка с моим проектом sikulix:

C:\project\ 

У меня есть папка с основным приложением:

C:\project\application.sikuli

У меня есть папка с моим модулем: (которую я импортирую в основное приложение)

C:\project\myLib.sikuli

содержимое моего модуля myLib:

from sikuli import *

def myFunc1():
    print(" myFunc1 ")

содержимое моего основного приложения:

import sys
sys.path.append("C:\project\myLib.sikuli")
from myLib import *

myFunc1()

.......................................... .............................

  • Если я запускаю основное приложение, выводится «myFunc1». Все хорошо без проблем.
  • Если я запускаю мой модуль myLib, ничего не происходит. Все хорошо без проблем.

  • Если я внес какие-либо несущественные изменения в модуль myLib (например, новую строку в конце файла), я получаю сообщение об ошибке:

Traceback (most recent call last):
  File '<string>', line 1, in <module>
NameError: name 'myLib' is not defined
[error] IDE: Run Script: internal error:

Я получаю эту ошибку, если я запускаю основное приложение, а также если я пытаюсь запустить myLib.

  • Если я перезагружаю свой SikuliX, все снова окей ... Новая строка в конце myLib больше не является проблемой.

Это выглядит как внутренняя ошибка SikuliX, но я не очень разбираюсь в SikuliX, поэтому я очень ценю вашу мнения об этом поведении.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 января 2020

Я получил решение от RaiMan (https://github.com/RaiMan):

Это нормальное поведение, так как в среде IDE есть только состояние c контекст для интерпретатора Jython (сбрасывается не полностью при перезапуске сценариев в том же сеансе IDE, чтобы сэкономить время запуска в течение нескольких секунд).

В документации есть примечание в разделе Некоторые комментарии к общим правилам для Python import

В вашем случае использование:

import myLib
from myLib import *

вместо только

from myLib import *

должно помочь запустить перезагрузку при повторном запуске сценария.

0 голосов
/ 29 января 2020

Я ответил в GitHub. RaiMan от SikuliX

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...