как определить функции в файле конфигурации ipython? - PullRequest
4 голосов
/ 07 ноября 2011

Использование ipython 0.11, если я ввожу определение функции, например

def f(s): print s

тогда я могу использовать эту функцию в этом сеансе ipython, но я не знаю, как это определить в файле ipython_config.py. Если я просто наберу определение функции в файле и попытаюсь использовать функцию, то она не определена.

Есть идеи?

Ответы [ 3 ]

8 голосов
/ 07 ноября 2011

Здесь два ответа:

Во-первых, для супер простых функций, подобных приведенным выше, вы можете определить их в exec_lines, например:

c.InteractiveShellApp.exec_lines = [ "def f(s): print s" ]

(вы можете определять произвольно сложные функции таким образом, но это раздражает за несколько строк)

Для более сложного кода вы можете написать скрипт, который вы хотели бы запустить при запуске, и добавить его вexec_files список:

c.InteractiveShellApp.exec_files = [ "/path/to/myscript.py" ] 
# if you put the script in the profile dir, just the filename will suffice

Мы поняли, что это немного раздражает, поэтому в 0.12 в каталогах профилей будет папка автозагрузки, и все, что вы туда вставите, будет запускаться автоматически.По сути, это добавление дополнительного glob.glob('*.py') к exec_files (что вы можете сделать самостоятельно в 0.11, конечно).

2 голосов
/ 07 ноября 2011

Вам нужно определить файл python для запуска при запуске ipython.Вы можете сделать это, установив список exec_files:

c = get_config()
c.InteractiveShellApp.exec_files = [
        '/tmp/mymodule.py'
]

Тогда мой файл "/tmp/mymodule.py":

def foo():
    print "bar"

И, наконец, используя это:

$ ipython

In [1]: foo()
bar

Дополнительную информацию о конфигурационном файле ipython можно найти здесь: http://ipython.org/ipython-doc/dev/config/ipython.html

0 голосов
/ 08 сентября 2016

Многострочные функции могут быть определены в файлах *.py и *.ipy в каталоге startup в каталоге профиля.

(Обратите внимание, что файлы *.ipy и *.py обрабатываются по-разному.)

Каталог профиля можно найти из командной строки, используя

$ ipython locate profile
...