如何在IPython中运行脚本?

71

我的用例是我想要在一个文件中初始化一些函数,然后使用已定义的这些函数启动IPython。是否有类似的方法可以实现这个目标?

ipython --run_script=myscript.py
7个回答

111

在最近的IPython版本中,你需要添加-i选项才能进入交互式环境。如果没有-i,它只会运行myfile.py中的代码并返回到提示符。

ipython -i myfile.py

7
额外说明一下,“最近版本”是指在0.10.2〜> 0.11架构改进之后,而“-i”选项向后兼容ipython 0.10.2(我可以确认)并且可能更低(我可以推测)。 - DreadPirateShawn

34

根据文档,这很简单:

您可以使用以下命令启动IPython:

$ ipython [options] files

如果没有添加任何选项,ipython 会按照顺序执行所有列出的文件并将你带到解释器中,同时仍然承认你在 ipythonrc 文件中设置的任何选项。这种行为与标准 Python 不同,后者在调用 python -i 时只会执行一个文件并忽略你的配置设置。

因此,只需使用 ipython myfile.py 就可以了... 然后你就到那里啦!-)


13
此回答已经过时。请参考下面@Maarten的答案。您需要使用-i标志以及您想要的任何其他选项,后跟Python脚本名称。这样,您将留在解释器中,而不是立即退出。 - CPBL

18

您可以使用IPython配置文件来定义启动脚本,每次启动IPython时都会运行它。关于配置文件的完整描述,请参见这里。您可以创建多个带有不同启动文件的配置文件。

如果您只需要一个配置文件,并且每次启动IPython时始终需要相同的启动文件,则可以简单地修改默认配置文件。要执行此操作,请首先在ipython会话中找到您的IPython配置目录所在位置:

In [1]: import IPython
In [2]: IPython.paths.get_ipython_dir() # As of IPython v4.0
In [3]: print(ipython_config_dir)
/home/johndoe/.config/ipython

这个例子中,我使用的是Ubuntu Linux操作系统,并且配置文件目录在/home/johndoe/.config/ipython,其中johndoe是用户名。

default_profile位于profile_default子目录中。将任何启动脚本放置在profile_default/startup中。在此示例中,完整路径为/home/johndoe/.config/ipython/profile_default/startup


3
我不知道这是最近添加的内容还是早就存在,但是要找到给定配置文件的路径,可以使用 IPython.paths.locate_profile() - Michael Foukarakis

16

现在,您可以使用IPython的启动文件夹,该文件夹位于您的主目录下(Windows上为C:\ users \ [用户名] \ .ipython)。 进入默认配置文件,您将看到一个带有README文件的启动文件夹。 只需将任何Python脚本放在其中,或者如果您想要IPython命令,请将它们放在扩展名为.ipynb的文件中。


谢谢,了解启动目录的信息很不错。我最近发现配置文件选项中的exec_files。似乎启动目录文件在执行exec_files条目之前被执行。这个链接很有用。 - nom-mon-ir
3
在Ubuntu系统上,~/.config/ipython/profile_default/startup是一个文件路径。 - wim

1
以下内容是关于如何使你的启动脚本在使用IPython时自动运行(而不是每次运行IPython时都必须指定脚本)。
对于最新版本(即5.1.0)的IPython,将一个或多个你想要执行的Python脚本放置在IPYTHON_CONFIG_DIR/profile_PROFILENAME/startup文件夹中。
例如,在Linux上,如果你想要在没有指定IPython配置文件时运行Python启动代码,则可以将其放入名为~/.ipython/profile_default/startup/10-mystartupstuff.py的文件中。
有关创建和使用IPython配置文件的信息,请点击此处

0
你似乎正在寻找IPython的%run魔术命令。

在IPython中输入:

%run hello_world.py

你将运行保存在你的主目录中的hello.py程序。该脚本中定义的函数和变量也将对你可用。


2
问题是如何使用文件启动ipython,而不是在ipython中运行文件。 - Jorge Leitao

-1

针对Python 3.5在Ubuntu 14.04(Trusty Tahr)中的更新,请参考Caleb's answer:我通过复制Caleb答案的相关部分,使这个答案变得自包含。

您可以使用IPython配置文件来定义启动脚本,每次启动IPython时都会运行。有关配置文件的完整描述,请参见此处。您可以创建多个具有不同启动文件的配置文件。

假设您只需要一个配置文件,并且每次启动IPython时都希望使用相同的启动文件,则可以简单地修改默认配置文件。要做到这一点,首先在IPython会话中找出您的IPython配置目录在哪里:

输入:

import IPython
ipython_config_dir = IPython.paths.get_ipython_dir()
print(ipython_cofig_dir)

输出:

/home/johndoe/.ipython

对于这个例子,johndoe 是用户名。
/.ipython 文件夹内,default_profile 位于 profile_default 子目录中。将任何启动脚本放置在 profile_default/startup 中。在这个例子中,完整路径为:
/home/johndoe/.ipython/profile_default/startup

2
这个回答并没有回答问题。一个答案必须完全包含在自己里面。我建议将其补充完整。 - Jorge Leitao
我应该只是编辑@Calebs的答案吗?加上这个更新!还是让它自成一体?谢谢!虽然我已经编辑过了! - agent18
1
我认为你不应该修改Caleb的答案,因为这会极大地改变它。我建议你添加相关信息,使你的回答可以独立回答问题。把自己放在一个没有阅读Caleb的答案的人的位置上,看看需要哪些信息才能让他们从头到尾跟随你的回答。 :) - Jorge Leitao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接