Инициализировать интерпретатор с переменными
Как инициализировать интерпретатор python таким образом, чтобы в его памяти уже были переменные? Например, как я могу инициализировать интерпретатор [n i]Python и ввести в качестве первого ввода:
In [1]: today
Out[1]: '2015-05-05 17:49:32.726496'
без предварительной привязки имени str(today = datetime.datetime.today())
?
4 ответа
Если вы используете ipython, вы можете настроить его для автоматической загрузки скриптов.
Бежать
$ ipython profile create
который создаст профиль по умолчанию в вашем домашнем каталоге.
Создайте файл с именем ~/.ipython/ipython_init.py
и добавить
import datetime
today = datetime.datetime.today
Теперь в конце ~/.ipython/profile_default/ipython_config.py
, добавьте эту строку, чтобы он загружал этот файл при каждом запуске интерпретатора
c.InteractiveShellApp.exec_files = ['~/.ipython/ipython_init.py']
В следующий раз, когда вы запустите оболочку ipython, вы сможете получить доступ к этим переменным.
In [1]: today
Out[1]: datetime.datetime(2017, 3, 2, 13, 31, 26, 776744)
Существует три варианта стандартного интерпретатора Python:
python -i setup.py
как объяснили в ответе цамана- падение в интерактивный режим изнутри
setup.py
как объяснено в ответе Джордана П - установка переменной среды
PYTHONSTARTUP=setup.py
,
Последний вариант полезен, если вы хотите запускать и останавливать Python сотни раз. Просто export PYTHONSTARTUP=setup.py
и пока вы находитесь в одной оболочке, он всегда будет загружаться setup.py
, Или, если вы хотите, чтобы он был более постоянным, поместите его в свой профиль (или переменные среды панели управления Windows или что-то еще).
PYTHONSTARTUP
особенно удобно с virtualenvwrapper
И его post_activate
крюк. Просто установите крюк export PYTHONSTARTUP=${VIRTUAL_ENV}/setup.py
и вы можете иметь различные настройки для каждой среды.
На самом деле, что -i
на самом деле это, по сути, переопределить PYTHONSTARTUP
с одноразовым временным значением.
IPython имеет свою очень мощную (но несколько сложную) систему настройки и настройки. Вы можете создать дюжину различных профилей и редактировать каждый из них, чтобы включить или отключить использование -i
а также PYTHONSTARTUP
, менять PYTHONSTARTUP
использовать другое имя переменной, выполнять разные строки кода при каждом запуске ядра и т. д. Большая часть того, что вы хотите, находится в настройках терминала IPython, если вы используете его в терминале.
В дополнение к другому ответу вы можете явно перейти в интерактивный режим, например:
// setup.py
import code, datetime
today = datetime.datetime.today()
code.interact(local=locals())
выполнить нормально
python setup.py
Вы можете создать скрипт, содержащий ваш "установочный" код, а затем выполнить его и войти в интерактивный режим.
Например:
# foo.py
import datetime
today = datetime.datetime.today
Бежать с:
python -i foo.py
>>> today
'2015-05-05 17:49:32.726496'
Я считаю, IPython должен поддерживать ту же опцию. Другая альтернатива для IPython - это просто запустить его, а затем сказать:
In [1]: %run foo.py
Который будет запускать этот скрипт в вашей текущей оболочке, предоставляя вам доступ ко всему, что там определено.