2010-11-09 2 views
31

Меня часто просят отлаживать скрипты Python, написанные другими. Я хотел бы отправить эти сценарии на IPython, чтобы он упал в оболочку IPython в момент сбоя скрипта.Параметры командной строки для IPython * scripts *?

К сожалению, я не могу найти способ отправки (требуемых) параметров командной строки, требуемых сценариями.

IPython предполагает все в для IPython, когда я прохожу сценарий и его параметры, как:

ipython <script_name> <script_options> 

Есть ли решение или обходной путь?

ответ

23
ipython -i -c "%run test.py 1 2 3 4" 
+0

Очень приятно! К сожалению, когда это исключение, оно возвращает меня обратно в командную строку ОС, а не в приглашение IPython. Предложения? –

+1

Ну, вы можете просто запустить ipython, а затем выполнить% run test.py 1 2 3 4 –

+1

На самом деле добавление -i заставляет его оставаться в оболочке. –

39
ipython -- sometest.py 1 2 3 4 
+2

Это работает, но я не мог найти это в документах, можете ли вы указать мне, где это задокументировано? –

+3

Также, чтобы оставаться внутри интерактивной оболочки, используйте синтаксис 'ipython -i - sometest.py 1 2 3 4'. –

+2

Обратите внимание, что '-' является признаком интерпретатора системной оболочки и не является специфичным для оболочки ipython –

4

Я знаю, что есть более уже принял решение, но в самой последней версии IPython это не будет работать. Вот вырезать и вставлять команды я использую для запуска торнадо тесты с --autoreload

ipython --c="%run test.py --autoreload" 

Это использование IPython .11.

1

Простой пример here.

script.py

from sys import argv 

script, first, second, third = argv 

print "The script is called:", script 
print "Your first variable is:", first 
print "Your second variable is:", second 
print "Your third variable is:", third 

оболочки:

$ ipython script.py stuff things that 
The script is called: ex13.py 
Your first variable is: stuff 
Your second variable is: things 
Your third variable is: that 
0

Многие аспекты поведения IPython можно управлять с помощью настроек в пользовательских IPython конфигурационных файлов, которые обычно находятся в ~/.ipython/. Пользователь может создавать несколько профилей , каждый с различными настройками параметров конфигурации. Каждый профиль имеет свои настройки в отдельной папке в папке .ipython. Профиль по умолчанию находится в profile_default, а основным файлом там для настройки является ipython_config.py. По умолчанию он почти полностью комментируется, с комментариями строк, отображающих конфигурационные переменные и их настройки по умолчанию. Раскомментируйте или вставьте строки, чтобы изменить поведение.

Чтобы изменить IPython ведет себя в конце выполнения сценария, используйте:

c.TerminalIPythonApp.force_interact = True 

Затем, когда сценарий завершается (или вызывает исключение), IPython будет продолжать работать и представить вам подсказку. Это то же поведение, что и ipython -i.

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

Документация по конфигурации IPython доступна здесь:

Смежные вопросы