Я использовал консоль NppExec в Блокноте для запуска скриптов python и ruby с использованием python script_name.py или ruby script_name.rb , и по большей части это работает хорошо: вывод перенаправляется в консоль NppExec, а я нет Я должен выключить Notepad++, чтобы проверить мой скрипт.

Однако то, что я действительно хотел бы сделать, это запустить интерактивный сеанс python или ruby из консоли NppExec. Например, просто python или просто irb не позволяют интерактивно работать в консоли.

Кому-нибудь повезло с этим?

Если бы это было возможно, это означало бы возможность использовать функции / методы в данном скрипте из консоли, не выходя из Notepad++.

3 ответа3

1

Это не похоже, что это возможно. Из документации NppExec я цитирую:

NppExec НЕ ...

  • NppExec не является консольным эмулятором. NppExec перенаправляет вывод запущенного процесса в свое окно консоли и может перенаправить ввод окна консоли в запущенный процесс (с некоторыми ограничениями). Консоль NppExec не является "реальным" консольным окном (на самом деле оно использует элемент управления RichEdit для ввода / вывода текста), оно не обеспечивает экранный буфер консоли. Таким образом, консольное приложение, которому требуется "настоящий" экранный буфер консоли, должно быть запущено в собственном окне консоли (с помощью команды NPP_RUN).

  • NppExec не является интерпретатором команд. NppExec не понимает такие команды, как "copy", "call", "for" и т.д., Потому что это не "настоящая" консоль и не эмулятор консоли. Тем не менее, NppExec имеет собственную внутреннюю реализацию таких команд, как 'cls', 'cd', 'dir', 'echo', 'set' ('env_set') и вводит другие специфические команды. Также вы можете использовать «cmd / c» для выполнения любой команды cmd внутри NppExec.

  • NppExec не является компилятором. NppExec позволяет вам использовать внешние инструменты и компиляторы для обработки / компиляции вашего текущего файла, но он не имеет возможности сделать это сам по себе. Никакой магии здесь :)

Поскольку отсутствует экранный буфер консоли, консоль NppExec не может рассматриваться как "настоящая" консоль.

Вам гораздо лучше попробовать приложение, предназначенное для интерактивного тестирования кода, такое как IPython для Python.

0

Я новичок в Python и пытался изучить программирование на Python, и из-за некоторых проблем в IDLE(таких как нумерация строк) я решил использовать Notepad++ и, конечно, плагин NPP_EXEC для облегчения компиляции кода. Я преуспел в некоторых других, таких как компиляция файлов * .vbs, но на этот раз для python это не было триумфом по какой-то причине, несмотря на все решения, представленные здесь и где-либо еще.

Сначала я попробовал python -u "$(FULL_CURRENT_PATH)" в NPP_EXEC. Для некоторых скриптов на python результат был удовлетворительным, и когда я продолжил изучать больше на python, я снова столкнулся с проблемой, потому что результат был не таким, как я ожидал. Я столкнулся с решением здесь [AKE]. к сожалению, до сих пор ни один из них не удался мне.

предположим следующий код.

#-------------------------------------------------
my_dict = dict({'Alice':1, 'John':2, 'Emma':3})
name = raw_input("enter the name: ")
name = name.capitalize()

if name in my_dict:
    #do something here
else: print("The name does not exist!")
#-------------------------------------------------

Я использовал оба:

python -u "$(FULL_CURRENT_PATH)"
а также
python -u -i "$(FULL_CURRENT_PATH)"

но результат всегда один и тот же, независимо от того, что вы вводите как имя в приведенном выше коде, результат всегда будет таким:
[Имя не существует!]

Я считаю, что это из-за ключа -u , поэтому я попытался опустить его и использовать просто -i как

python -i "$(FULL_CURRENT_PATH)"

Это сработало, но на этот раз после того, как вы увидели вывод, вы должны нажать Ctrl+C, чтобы завершить процесс вручную и выйти из интерактивного режима python в консоли NPP_EXEC.

Мне известны некоторые другие обходные пути, такие как использование меню «Блокнот» ++ « Запуск» и добавление туда некоторых команд или даже использование плагина PyNPP (хотя эти две процедуры практически идентичны путем перенаправления python на cmd), но ни одна из них не имела такого удобства, которое мне понравилось. Может быть, я ожидаю слишком многого от NPP_EXEC, потому что в его помощи это не настоящая консоль, но я хотел сделать все это в Notepad ++, не имея дело с некоторыми другими процессами, такими как IDLE, cmd или ....

Несмотря на это, я был бы признателен за любую помощь, если бы у кого-то был другой успешный опыт.

0

Edit (добавление небуферизованного ключа -u для лучшей производительности)

Оказывается, это возможно для Python, используя ключ -i (inspect) и ключ -u (небуферизованный вывод), несмотря на тот факт, что Npp_Exec не является настоящей консолью:

    python -u -i $(FULL_CURRENT_PATH)

При этом текущий файл запускается в консоли Npp_Exec в интерпретаторе Python и из-за переключателя -i переходит прямо в интерактивный режим, где вы можете продолжить из консоли NppExec для проверки / использования любых переменных или определений, предоставленных сценарием.

Если вы настроите консоль Npp_Exec для следования текущему каталогу с помощью Notepad++ Menu > Plugins > NppExec > Follow $(CURRENT_DIRECTORY , решение будет еще проще:

    python -u -i $(FILE_NAME)

(Примечание: для Ruby это все еще открытый вопрос, поскольку Ruby и его интерактивный интерпретатор irb являются двумя отдельными двоичными файлами и, похоже, не имеют переключателя проверки типа вместе с некоторыми другими странностями при запуске сценариев, которые имеют как ввод, так и вывод. .. )

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .