使用变量初始化解释器

Initialize interpreter with variables

如何初始化 python 解释器,使其内存中已有变量?例如,我如何初始化一个 [n i]Python 解释器,并输入我的第一个输入:

In [1]: today
Out[1]: '2015-05-05 17:49:32.726496'

没有先绑定名字 str(today = datetime.datetime.today())?

您可以创建一个包含您的 "setup" 代码的脚本,然后执行它并进入交互模式。

例如:

# 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

这将 运行 您当前 shell 中的脚本,让您可以访问那里定义的所有内容。

除了其他答案之外,您还可以像这样明确地进入交互模式:

// setup.py
import code, datetime
today = datetime.datetime.today()
code.interact(local=locals())

正常执行

python setup.py

标准 Python 解释器有三个选项:

如果您想启动和停止 Python 数百次,最后一个很有用。只要 export PYTHONSTARTUP=setup.py,只要您在同一个 shell,它就会始终加载 setup.py。或者,如果您希望它更永久,请将其放入您的配置文件(或 Windows 系统控制面板环境变量或其他)。

PYTHONSTARTUPvirtualenvwrapper 及其 post_activate 挂钩特别方便。只需将挂钩设置为 export PYTHONSTARTUP=${VIRTUAL_ENV}/setup.py,您就可以为每个环境设置不同的设置。

事实上,-i 实际上是用一次性临时值覆盖 PYTHONSTARTUP


IPython有它自己的非常强大(但有点复杂)configuration and customization system. You can build a dozen different profiles, and edit each one to enable and disable the use of -i and PYTHONSTARTUP, change PYTHONSTARTUP to use a different variable name, execute various lines of code each time a kernel is started, and so on. Most of what you want is under Terminal IPython options,如果你在终端使用它。

如果您正在使用 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 shell 时,您可以访问这些变量。

In [1]: today
Out[1]: datetime.datetime(2017, 3, 2, 13, 31, 26, 776744)