!
和%
都允许您从Jupyter笔记本电脑运行shell命令。
%
是by the IPython kernel提供的,允许您运行“魔术命令”,其中许多命令包括众所周知的shell命令。- Jupyter提供的
!
允许shell命令在单元内运行。
我还没有找到much来比较这两个命令,以及cd
等简单的shell命令。我看到的主要区别是%
是交互式的,实际上会改变你在shell * 中的位置,而在笔记本电脑 * 中。
当考虑在Jupyter笔记本中使用哪个符号来表示shell命令时,是否有其他的对比点或规则?
2条答案
按热度按时间prdp8dxp1#
!
调用shell(在新进程中),而%
影响与笔记本关联的进程(或笔记本本身;许多X1 M2 N1 X命令没有 shell 对应物)。!cd foo
本身没有持久的效果,因为具有更改的目录的进程立即终止。%cd foo
更改了笔记本进程的当前目录,这是一个持久的效果。gtlvzcf82#
感叹号(!)在Jupyter Notebook单元格中执行shell命令,当您键入(!)后接shell命令时,Jupyter Notebook将命令发送到shell以运行,另一方面,百分号(%)用于执行特殊命令,称为“魔术命令”,这些命令特定于Jupyter Notebook,不作为shell命令有效,例如:%matplotlib inline以启用内联绘图。
但是,%也能够发送类似“ls”的shell命令,“cd”或“pip install”到Jupypter Notebook中执行。我注意到的一个区别是,在后一种情况下,“pip install”将针对与Jupypter Notebook内核关联的活动虚拟环境,而如果我这样做,“!pip install”visual studio代码将抱怨要求使用%以便将包安装到正确的虚拟环境。