Запускать интерпретатор командной строки python с автоматическим загрузкой импорта
Я хотел бы поиграть в интерпретаторе python, но с кучей импорта и настройки объектов. Сейчас я запускаю интерпретатор в командной строке и каждый раз выполняю настройку. Есть ли способ запустить интерпретатор командной строки со всей выполненной инициализацией?
Пример:
# Done automatically.
import foo
import baz
l = [1,2,3,4]
# Launch the interpreter.
launch_interpreter()
>> print l
>> [1,2,3,4]
Ответы
Ответ 1
Вы можете создать script с кодом, который вы хотите запустить автоматически, затем используйте python -i
, чтобы запустить его. Например, создайте script (позвоните ему script.py) с помощью этого:
import foo
import baz
l = [1,2,3,4]
Затем запустите script
$ python -i script.py
>>> print l
[1, 2, 3, 4]
После завершения выполнения script, python оставит вас в интерактивном сеансе с результатами script.
Если вы действительно хотите, чтобы некоторые вещи выполнялись каждый раз при запуске python, вы можете установить переменную окружения PYTHONSTARTUP
в script, которая будет запускаться каждый раз при запуске python. См. Документацию в интерактивном файле запуска.
Ответ 2
Я столкнулся с этим вопросом при попытке настроить новый desk для моих исследований и обнаружил, что ответы выше не совсем подходят мое желание: содержать всю конфигурацию рабочего стола в одном файле (это означает, что я бы не создал отдельный script.py
, как это было предложено @srgerg).
Вот как я достиг своей цели:
export PYTHONPATH=$READ_GEN_PATH:$PYTHONPATH
alias prepy="python3 -i -c \"
from naive_short_read_gen import ReadGen
from neblue import neblue\""
В этом случае neblue
находится в CWD (поэтому там не требуется расширение пути), тогда как naive_short_read_gen
находится в произвольном каталоге в моей системе, который указан через $READ_GEN_PATH
.
Вы можете сделать это в одной строке, если необходимо: alias prepy=PYTHONPATH=$EXTRA_PATH:$PYTHONPATH python3 -i -c ...
.
Ответ 3
Я использую PYTHONSTARTUP
.
У моего .bash_profile
есть путь к моей домашней папке .pyrc
, которая в нем является инструкциями импорта.
https://docs.python.org/3/using/cmdline.html#envvar-PYTHONSTARTUP
Ответ 4
Вы можете использовать опцию -s во время запуска командной строки. Подробности приведены в документации здесь
Ответ 5
Я думаю, что знаю, что ты хочешь сделать. Возможно, вы захотите проверить IPython, потому что вы не можете запустить интерпретатор python, не указав параметр -i
(по крайней мере, не напрямую).
Это то, что я сделал в своем проекте:
def ipShell():
'''Starts the interactive IPython shell'''
import IPython
from IPython.config.loader import Config
cfg = Config()
cfg.TerminalInteractiveShell.confirm_exit = False
IPython.embed(config=cfg, display_banner=False)
# Then add the following line to start the shell
ipShell()
Вам нужно быть осторожным, потому что оболочка будет иметь пространство имен модуля, определяемое функцией ipShell()
. Если вы поместите определение в файл, который вы запустили, вы сможете получить доступ к globals()
, который вы хотите. Там может быть и другие обходными путями, чтобы впрыснуть имена вы хотите, но вы должны дать Аргументы функции в этом случае.
ИЗМЕНИТЬ
Следующая функция по умолчанию использует пространство имен вызывающего абонента (__main__.__dict__
).
def ipShell():
'''Starts the interactive IPython shell
with the namespace __main__.__dict__'''
import IPython
from __main__ import __dict__ as ns
from IPython.config.loader import Config
cfg = Config()
cfg.TerminalInteractiveShell.confirm_exit = False
IPython.embed(config=cfg, user_ns=ns, display_banner=False)
без дополнительных аргументов.