目录
执行和调试
多文件代码编辑
上传Notebook
Notebook快捷键
Notebook中使用Shell命令
查看文件夹目录
使用pip来安装自己需要的package (但不支持apt-get)
查看当前环境中安装的package
持久化安装
文件下载
Python代码执行与调试
变量监控
Magic命令
%env:设置环境变量
%run: 运行python代码
%%writefile and %pycat: 导出cell内容/显示外部脚本的内容
关于快速查看某个对象/方法/接口的用法
基于Notebook的方案和传统IDE方案略有不同, 请见下图:
本系统的Notebook支持多文件编辑, 支持.py, .json, .txt, .log等格式的在线编辑, 支持部分图片类型文件的在线预览.
上传文件的体积是30MB. 如果需要引用更大体积的文件, 请使用数据集功能.
用户也可以使用命令, !cat <
在项目空间内直接创建文件, 之后双击进行编辑. 如下图所示:
可以用自己的ipynb文件取代当前默认的Notebook(前提是格式合法)
和原生Notebook快捷键基本一致.
快捷键分成两种状态下的. 一个是命令模式, 一个是编辑模式, 掌握之后事半功倍.
通过在Shell命令前添加! (感叹号), 就可以执行部分Shell命令. 包括诸如 !pip install这样的命令. 不过, !apt-get这种可能引发用户进一步操作的命令是不支持的.
# 查看当前挂载的数据集目录
!ls /home/aistudio/data/
#显示当前路径
!pwd
!pip install jupyterthemes
!pip list --format=columns
如果需要进行持久化安装, 需要使用持久化路径, 如下方代码示例:
!mkdir /home/aistudio/external-libraries
!pip install beautifulsoup4 -t /home/aistudio/external-libraries
同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可:
import sys
sys.path.append('/home/aistudio/external-libraries')
使用git命令来同步代码 (暂时需要Paddle 1.4.1以上)
例如:
%cd work/
/home/aistudio/work
## 可以用gitee,速度会快一些
!git clone https://github.com/PaddlePaddle/Paddle.git #Paddle官方模型
Cloning into ‘Paddle’…
remote: Enumerating objects: 30627, done.
remote: Counting objects: 100% (30627/30627), done.
remote: Compressing objects: 100% (11396/11396), done.
remote: Total 333257 (delta 24891), reused 23673 (delta 19199), pack-reused 302630
Receiving objects: 100% (333257/333257), 190.23 MiB | 23.88 MiB/s, done.
Resolving deltas: 100% (276137/276137), done.
Checking connectivity… done.
可以看到同步后work目录下出现一个Paddle文件夹
也可以活用Git命令进行本地代码管理.
文件下载分为"文件夹打包下载"和"单一文件下载", 两者操作按钮在同一位置:
但文件夹下载可能耗时比较久, 每次只能下载一个文件夹内容, 也可能需要较长时间等待.
Notebook执行Python代码的原理和传统IDE略有不同.
而Notebook, 一旦启动, 就是开始创建一个"进程"(kernel). 每一个Cell, 都是一个天然的断点. 当代码出错, 或用户点击Stop按钮时, "进程"通常也不会被杀死.
因此如果代码陷入死循环等情况, 需要用户手动关闭并重启该"进程".
此外, Notebook的Cell是可以随意颠倒顺序来执行的. 这点和传统IDE有很大不同.
作为前端的Notebook, 与后端的进程(kernel), 建立有一个Session. 未来本平台将支持terminal功能. 也就可以同时支持多个Session来控制kernel.
因为Notebook的Cell是可以随意颠倒顺序来执行的, 因此本平台自带"变量监控"和"运行历史". 方便用户了解当前代码运行状态.
Magic命令是Notebook的高级用法了. 可以运行一些特殊的指令. Magic 命令的前面带有一个或两个百分号(% 或 %%),分别代表行 Magic 命令和单元格 Magic 命令。行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。
#显示全部可用的Magic命令
%lsmagic
Available line magics:
%alias %alias_magic %autoawait %autocall %automagic %autosave %bookmark %cat %cd %clear %colors %conda %config %connect_info %cp %debug %dhist %dirs %doctest_mode %ed %edit %env %gui %hist %history %killbgscripts %ldir %less %lf %lk %ll %load %load_ext %loadpy %logoff %logon %logstart %logstate %logstop %ls %lsmagic %lx %macro %magic %man %matplotlib %mkdir %more %mv %notebook %page %pastebin %pdb %pdef %pdoc %pfile %pinfo %pinfo2 %pip %popd %pprint %precision %prun %psearch %psource %pushd %pwd %pycat %pylab %qtconsole %quickref %recall %rehashx %reload_ext %rep %rerun %reset %reset_selective %rm %rmdir %run %save %sc %set_env %store %sx %system %tb %time %timeit %unalias %unload_ext %who %who_ls %whos %xdel %xmode
Available cell magics:
%%! %%HTML %%SVG %%bash %%capture %%debug %%file %%html %%javascript %%js %%latex %%markdown %%perl %%prun %%pypy %%python %%python2 %%python3 %%ruby %%script %%sh %%svg %%sx %%system %%time %%timeit %%writefile
Automagic is ON, % prefix IS NOT needed for line magics.
#使用Magic命令来统计运行时长
import random
%%timeit
prize = 0
for i in range(100):
roll = random.randint(1, 6)
if roll%2 == 0:
prize += roll
else:
prize -= 1
131 µs ± 1.66 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
甚至还可以直接嵌入可视化内容, 例如%matplotlib inline:
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,1,300)
for w in range(2,6,2):
plt.plot(x, np.sin(np.pi*x)*np.sin(2*w*np.pi*x))
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2349: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
if isinstance(obj, collections.Iterator):
/opt/conda/envs/python35-paddle120-env/lib/python3.7/site-packages/matplotlib/cbook/__init__.py:2366: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
return list(data) if isinstance(data, collections.MappingView) else data
[
[
这里需要注意的是, 当前技术架构局限, 一个Cell里面只能输出一张图片. 如果输出多张图片, 可能会有显示异常的问题
使用该命令, 可以在不必重启Kernel的情况下管理notebook的环境变量
# Running %env without any arguments
# lists all environment variables
# The line below sets the environment
# variable OMP_NUM_THREADS
%env OMP_NUM_THREADS=4
# Running %env without any arguments
# lists all environment variables
# The line below sets the environment
# variable OMP_NUM_THREADS
%env OMP_NUM_THREADS=4
env: OMP_NUM_THREADS=4
使用%run 可以运行.py格式的python代码
当然是用!python也是可以的
我在项目空间中上传了一个.py文件, 里面只有一行print代码. 我们执行一下看看.
%run /home/aistudio/work/SampleOfRun.py
paddlepaddle
!python /home/aistudio/work/SampleOfRun.py
paddlepaddle
AI Studio当前支持一定格式文件的预览和处理, 如果您的格式比较特殊, 尚未支持的话, 不妨试试这两个命令.
%%writefile magic可以把cell的内容保存到外部文件里。 而%pycat则可把外部文件展示在Cell中
%%writefile SaveToPythonCode.py
from math import sqrt
for i in range(2,10):
flag=1
k=int(sqrt(i))
for j in range(2,k+1):
if i%j==0:
flag=0
break
if(flag):
print(i)
Writing SaveToPythonCode.py
因为没有指定路径, 所以文件被保存到了根目录下. 但至少it works.
我们再来尝试从中读文件内容
%pycat /home/aistudio/work/SaveToPythonCode.py
更多magic命令:Built-in magic commands — IPython 7.31.0 documentation
在要查询的对象前输入?或??并执行即可. 单问号是普通信息, 双问号是详细信息.
前提: 该对象方法已经被正确导入(import)
示例:
import paddle
?paddle.nn.Conv3D