Параметры командной строки для сценариев IPython *? - PullRequest
35 голосов
/ 09 ноября 2010

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

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

IPython предполагает, что все, что есть для IPython, когда я передаю скрипт и его параметры как:

ipython <script_name> <script_options>

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

Ответы [ 5 ]

43 голосов
/ 17 марта 2011
ipython -- sometest.py 1 2 3 4
25 голосов
/ 09 ноября 2010
ipython -i -c "%run test.py 1 2 3 4"
4 голосов
/ 02 декабря 2011

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

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

. Используется ipython .11.

1 голос
/ 29 декабря 2015

Простой пример здесь .

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 голосов
/ 02 марта 2018

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

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

c.TerminalIPythonApp.force_interact = True

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

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

Документация по настройке IPython доступна здесь: Введение в настройку IPython - документация IPython , с опцией force_interact, описанной здесь: Параметры терминала IPython - Документация IPython .

...