IPython*脚本*的命令行选项?

IPython*脚本*的命令行选项?,python,ipython,Python,Ipython,我经常被要求调试别人编写的Python脚本。我想将这些脚本发送到IPython,以便在脚本失败时将其放入IPython shell 不幸的是,我找不到一种方法来发送脚本所需的(必需的)命令行选项 当我传递脚本及其选项时,IPython假设中的所有内容都是针对IPython的,如下所示: ipython <script_name> <script_options> ipython 有解决方案或变通办法吗?我知道有一个已经被接受的解决方案,但在ipython的最新版本中,

我经常被要求调试别人编写的Python脚本。我想将这些脚本发送到IPython,以便在脚本失败时将其放入IPython shell

不幸的是,我找不到一种方法来发送脚本所需的(必需的)命令行选项

当我传递脚本及其选项时,IPython假设中的所有内容都是针对IPython的,如下所示:

ipython <script_name> <script_options>
ipython

有解决方案或变通办法吗?

我知道有一个已经被接受的解决方案,但在ipython的最新版本中,这不起作用。下面是我用来运行tornado测试的命令的剪切粘贴--autoreload

ipython -i -c "%run test.py 1 2 3 4"
ipython --c="%run test.py --autoreload"
这是使用ipython.11的一个简单示例

script.py

from sys import argv

script, first, second, third = argv

print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
外壳:

$ ipython script.py stuff things that
The script is called: ex13.py
Your first variable is: stuff
Your second variable is: things
Your third variable is: that

IPython行为的许多方面可以通过用户IPython配置文件中的设置来控制,这些文件通常位于
~/.IPython/
中。用户可以创建多个配置文件,每个配置文件具有不同的配置参数设置。每个配置文件在
.ipython
文件夹中的单独文件夹中都有其设置。默认配置文件位于
profile\u default
中,其中用于自定义行为的主文件是
ipython\u config.py
。默认情况下,它几乎完全被注释,注释行显示配置变量及其默认设置。取消注释或插入行以更改行为

要更改IPython在运行脚本结束时的行为方式,请使用:

c.TerminalIPythonApp.force_interact = True
然后,当脚本结束(或引发异常)时,IPython将继续运行并向您显示提示。这与
ipython-i
的行为相同

我在默认配置文件中使用此设置,因为这是我始终希望IPython的行为方式。如果您不是这样,您可以创建具有此行为的配置文件,以便在需要此行为时使用。或者继续使用(显然是未记录的)
-i
选项


IPython配置文档可在此处获得:,其中介绍了
force\u interact
选项:。

非常好!不幸的是,当它出现异常时,它会将我放回OS命令行,而不是IPython提示符。建议?你可以先启动ipython,然后运行%run test.py 1 2 3 4,实际添加-i使其留在shell中。@jimbob如果你不介意我问的话,你在哪里找到了“-i”选项?我在“ipython-help”和“@JS”中都没有找到它,我只在man python中找到了它(不是ipython):“-i当脚本作为第一个参数传递或使用-c选项时,请在执行脚本或命令后进入交互模式。它不读取$PYTHONSTARTUP文件。当脚本引发异常时,这对于检查全局变量或堆栈跟踪非常有用。“有点令人沮丧的是,它不在man ipython中,但尝试了一下就成功了。它成功了,但我在文档中找不到它,你能告诉我这是在哪里记录的吗?还要保留在交互式shell中使用
ipython-I--sometest.py 1 2 3 4
语法。请注意,'--'是系统shell解释器的一个功能,并且不是特定于ipython Shell的。如果您想使用ipdb进行调试,可以类似地使用
ipython--pdb--somtest.py 1 2 3 4
c.TerminalIPythonApp.force_interact = True