IPython 运行 魔法:如何为 "run -i" 创建别名?
IPython run magic: How create an alias for "run -i"?
我正在编写一个 python 用户界面来控制实验室中的各种仪器。如果脚本不是 运行 交互,与仪器的连接会在脚本末尾丢失,这可能非常糟糕。我想帮助用户以交互方式 'remember' 运行 安装脚本。
我正在考虑两种可能的方法。首先,如标题中所述,我可以为 run -i
:
创建一个别名
%alias_magic lab_run run -i
但是这个 returns 一个错误:
UsageError: unrecognized arguments: -i
有办法解决这个问题吗?
或者,我可以检测脚本内部是否传递了 -i
标志,如果没有传递则引发错误。但是,它没有出现在 sys.argv
列表中:
In [1]: import sys
In [2]: run -i test.py random args
['test.py', 'random', 'args']
我不能使用 ipy 文件,因为我需要读取 %运行 标志,如我之前的问题所述:
有人看到这个问题的解决方案吗?
您可以定义自己的魔法函数并在其中使用%run -i
:
from IPython.core.magic import register_line_magic
@register_line_magic
def r(line):
get_ipython().magic('run -i ' + line)
del r
编辑
正如 hpaulj 指出的那样,magic
已弃用。这里有一个新的版本
run_line_magic
:
from IPython.core.magic import register_line_magic
@register_line_magic
def r(line):
get_ipython().run_line_magic('run', ' -i ' + line)
del r
Now:
%r
与以下内容相同:
%run -i
感谢@Mike ,它为我指明了制作 cell 魔法别名的正确方向
我发现 %alias_magic [-l] [-c] [-p PARAMS] name target
在 docs 中对我有用
就我而言:
%alias_magic --cell py_310 script -p C:\Users\myname\AppData\Local\Programs\Python\Python310\python
输出
Created `%%py_310` as an alias for `%%script C:\Users\myname\AppData\Local\Programs\Python\Python310\python`.
然后可以像
一样使用
%%py_310
import sys
print(sys.version_info)
输出
sys.version_info(major=3, minor=10, micro=1, releaselevel='final', serial=0)
我正在编写一个 python 用户界面来控制实验室中的各种仪器。如果脚本不是 运行 交互,与仪器的连接会在脚本末尾丢失,这可能非常糟糕。我想帮助用户以交互方式 'remember' 运行 安装脚本。
我正在考虑两种可能的方法。首先,如标题中所述,我可以为 run -i
:
%alias_magic lab_run run -i
但是这个 returns 一个错误:
UsageError: unrecognized arguments: -i
有办法解决这个问题吗?
或者,我可以检测脚本内部是否传递了 -i
标志,如果没有传递则引发错误。但是,它没有出现在 sys.argv
列表中:
In [1]: import sys
In [2]: run -i test.py random args
['test.py', 'random', 'args']
我不能使用 ipy 文件,因为我需要读取 %运行 标志,如我之前的问题所述:
有人看到这个问题的解决方案吗?
您可以定义自己的魔法函数并在其中使用%run -i
:
from IPython.core.magic import register_line_magic
@register_line_magic
def r(line):
get_ipython().magic('run -i ' + line)
del r
编辑
正如 hpaulj 指出的那样,magic
已弃用。这里有一个新的版本
run_line_magic
:
from IPython.core.magic import register_line_magic
@register_line_magic
def r(line):
get_ipython().run_line_magic('run', ' -i ' + line)
del r
Now:
%r
与以下内容相同:
%run -i
感谢@Mike
我发现 %alias_magic [-l] [-c] [-p PARAMS] name target
在 docs 中对我有用
就我而言:
%alias_magic --cell py_310 script -p C:\Users\myname\AppData\Local\Programs\Python\Python310\python
输出
Created `%%py_310` as an alias for `%%script C:\Users\myname\AppData\Local\Programs\Python\Python310\python`.
然后可以像
一样使用%%py_310
import sys
print(sys.version_info)
输出
sys.version_info(major=3, minor=10, micro=1, releaselevel='final', serial=0)