shell Jupyter笔记本中的!和%有什么区别?

8ftvxx2r  于 2023-03-09  发布在  Shell
关注(0)|答案(2)|浏览(452)

!%都允许您从Jupyter笔记本电脑运行shell命令。

  • %by the IPython kernel提供的,允许您运行“魔术命令”,其中许多命令包括众所周知的shell命令。
  • Jupyter提供的!允许shell命令在单元内运行。

我还没有找到much来比较这两个命令,以及cd等简单的shell命令。我看到的主要区别是%是交互式的,实际上会改变你在shell * 中的位置,而在笔记本电脑 * 中。
当考虑在Jupyter笔记本中使用哪个符号来表示shell命令时,是否有其他的对比点或规则?

prdp8dxp

prdp8dxp1#

!调用shell(在新进程中),而%影响与笔记本关联的进程(或笔记本本身;许多X1 M2 N1 X命令没有 shell 对应物)。
!cd foo本身没有持久的效果,因为具有更改的目录的进程立即终止。
%cd foo更改了笔记本进程的当前目录,这是一个持久的效果。

gtlvzcf8

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代码将抱怨要求使用%以便将包安装到正确的虚拟环境。

相关问题