【发布时间】:2016-03-04 00:21:41
【问题描述】:
我正在尝试使用 IPython 编写一些脚本,但我发现它在脚本中的行为与我运行交互式 shell 时的行为非常不同。
例如,我可以交互地运行以下命令:
In [1]: %profile
default
In [2]: ls /
bin/ cdrom/ etc/ initrd.img@ lib/ lib64/ media/ opt/ root/ sbin/ sys/ usr/ vmlinuz@
boot/ dev/ home/ initrd.img.old@ lib32/ lost+found/ mnt/ proc/ run/ srv/ tmp/ var/ vmlinuz.old@
In [3]: mkdir tmpdir
In [4]: cd tmpdir
/home/alex/tmp/tmpdir
没问题。
但是,当我在脚本中运行这些命令时,它们都不起作用:
#!/usr/bin/ipython3
%profile
ls /
mkdir tmpdir
cd tmdir
我收到一个错误:
$ ./tmp.py
File "/home/alex/tmp/tmp.ipython", line 3
%profile
^
SyntaxError: invalid syntax
我已尝试通过以下方式运行它:
- 如上直接调用文件,
- 使用 ipython 显式调用它:`ipython3 tmp.py'
- 在使用 ipython 调用时将
-i或--profile=sh参数传递给 ipython - 将文件扩展名更改为
.ipython和.ipy
我的问题: 为什么它在脚本中的行为与 shell 不同?如何让 IPython 在脚本中运行这些命令?
【问题讨论】: