2013-04-04 1 views
0

При использовании магической функции% edit от QtConsole с IPython вызов не блокируется и не выполняет сохраненный код. Однако он сохраняет временный файл ...Ipython QtConsole% edit

Я думаю, что это предназначено для поведения редакторов GUI и неопределенности, и какова бы ни была причина этого в том, что вы не можете общаться с подпроцессом (pyZMQ?).

Что вы предлагаете как лучший способ смешать% edit /% run magics?

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

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

ответ

1

вы shoudl можете сделать %edit filename.py и %run filename.py. Ожидается неблокирующее поведение, а IIRC - по техническим причинам. Не непреодолимо, но сложно.

Вы можете определить свою собственную магию, если хотите, улучшения приветствуются.

Надеюсь, что мы сможем в ближайшее время отредактировать макросы, что сделало бы это достаточно хорошо, чтобы заставить его работать.

Для этого также приветствуются PR. Я думаю, как обходной/опции вы можете %load macro, который поставил бы макрос на входе п + 1, отредактировать его и переопределить его, что может быть хорошим расширением для ячейки волшебной %%macro macroname

+0

Причина, по которой я упоминал «% edit macro», связан с соответствующим «% save macroname filename.ipy». Мое предпочтение состояло в том, чтобы сохранить мой вход как можно чище и сохранить беспорядок в% edit. Что мне нравится в% edit macro - это использование временного файла * автоматически * (поэтому мне не нужно обременять пути и имена файлов). – user2097818

0

Если у вас есть исполняемый код на вашем входе (от QtConsole), вы можете ввести

%edit 1-5 

Это запускает редактор, создает файл временно (с автоматическим управлением), и загружает свои входные линии. Это почти достаточно, теперь как прагматически получить имя этого временного файла?

Я вижу инструкцию печати на Stdout, но ее не видно QtConsole AFAIK. Возможно, можно перенаправить stdout, чтобы поймать эту строку, но это может быть не вариант, если вы делаете что-то еще с stdout.

Если бы я мог получить полное имя пути, которое только что было создано, это будет торт. Храните его там, где некоторые волшебники будут знать, как его найти. Затем выпустите команду followup, когда будете готовы, вытащите имя из стека, загрузите его в макрос и запустите. Все это с 2 командами ввода и никакими именами для запоминания (если вы не захотите снова найти и использовать этот макрос, но для материала с одним выстрелом ...)

Как поймать или получить путь к этому временному файлу?