jupyter魔法指令的一点点探索

如题。

%pip install!pip install 的区别说起

参考: stackoverflow - difference between ‘%pip’ and ‘!pip’

在jupyter notebook中,%pip install!pip install 的区别是:

  • %pip install 是一个魔法指令,它会在当前的notebook内核所运行的虚拟环境中安装模块。
  • !pip install 是一个shell命令,它会在基础环境中安装模块。类似的,使用! <command>允许运行lspwd等命令或操作系统上可用的命令。

在安装新模块的过程中,虽然使用 !pip install 同样可以安装新模块,但代码编辑器会推荐使用 %pip install ,这样可以确保安装的模块和notebook内核是兼容的,并且不会影响到其他Notebook或系统级别的Python环境。

什么是jupyter魔法指令

参考: https://ipython.readthedocs.io/en/stable/interactive/magics.html

在Jupyter Notebook中,“魔法指令”(Magic Commands)是一组特殊的命令,它们以百分号(%)或双百分号(%%)为前缀。这些命令用于执行一些特殊的操作,如操作系统命令、调用系统工具、测量代码 执行时间等。

需要注意的是,提供这些魔法指令的并非jupyter notebook本身,而是jupyter所连接到的IPython内核。% 符号并非python语言中的有效一元运算符,因此IPython内核得以对其进行重载以提供这些魔法指令;然而jupyter也可以连接到其他语言的内核(如IJulia、IRKernel等,如下图),在这些语言中 % 可能有功能,因此当使用其他编程语言编写jupyter notebook时,这些魔法指令可能无法使用。

jupyter project review

jupyter魔法指令有哪些,怎么用

两类魔法指令

魔法指令分为两种类型:行魔法指令和单元格魔法指令。

  • 前者以一个百分号 % 开头,只对当前行的代码有效。
  • 后者以两个百分号 %% 开头,必须放在单元格的第一行,其对整个单元格的代码都有效。

可以使用 %lsmagic 命令来列出所有可用的魔术命令,或者使用 %quickref 命令来查看简要的帮助文档。

lsmagic

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
In [1]: %quickref

IPython -- An enhanced Interactive Python - Quick Reference Card
================================================================

obj?, obj?? : Get help, or more help for object (also works as
?obj, ??obj).
?foo.*abc* : List names in 'foo' containing 'abc' in them.
%magic : Information about IPython's 'magic' % functions.

Magic functions are prefixed by % or %%, and typically take their arguments
without parentheses, quotes or even commas for convenience. Line magics take a
single % and cell magics are prefixed with two %%.

The following magic functions are currently available:

%alias:
Define an alias for a system command.
%alias_magic:
::
%autoawait:

%autocall:
Make functions callable without having to type parentheses.
%autoindent:
Toggle autoindent on/off (deprecated)
%automagic:
Make magic functions callable without having to type the initial %.
%bookmark:
Manage IPython's bookmark system.
%cd:
Change the current working directory.
%cls:
Clear screen.
--- more ---

另外,%Magics_Name? 命令可以用来查看某个魔术命令的详细说明,比如 %time?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
In [2]: %time?
Docstring:
Time execution of a Python statement or expression.

The CPU and wall clock times are printed, and the value of the
expression (if any) is returned. Note that under Win32, system time
is always reported as 0, since it can not be measured.

This function can be used both as a line and cell magic:

- In line mode you can time a single-line statement (though multiple
ones can be chained with using semicolons).

- In cell mode, you can time the cell body (a directly
following statement raises an error).

This function provides very basic timing functionality. Use the timeit
magic for more control over the measurement.

.. versionchanged:: 7.3
User variables are no longer expanded,
the magic line is always left unmodified.

常用指令

下面是一些常用的魔术命令的例子:

  • %run:运行外部Python脚本,比如 %run hello.py
  • %load:载入外部脚本的内容到一个代码单元格中,比如 %load hello.py
  • %time:测量单行代码的执行时间,比如 %time x = sum(range(100))
  • %timeit:测量单行代码的平均执行时间,比如 %timeit x = sum(range(100))
  • %%time:测量整个单元格代码的执行时间,比如:
1
2
3
%%time
x = sum(range(100))
y = sum(range(200))

time statictis

  • %%writefile:将当前单元格的内容写入文件中,比如:
1
2
%%writefile hello.py
print("Hello, world!")
  • %%latex:显示LaTeX公式,比如:
1
2
3
4
%%latex
\begin{equation}
\int_0^\infty \frac{x^3} {e^x-1}\,dx = \frac{\pi^4} {15} \label{eq:sample}
\end{equation}

latex

  • %matplotlib:设置Matplotlib图形的渲染方式。比如%matplotlib inline
  • %reset:清除所有变量的名称空间。
  • %who%whos:显示当前命名空间中的变量。
  • %pdb:启用或禁用交互式调试器(pdb)。
  • %history:显示输入/输出历史记录。