谢作如 温州科技高级中学
邱奕盛 华东师范大学教育信息技术学系/上海数字化教育装备工程技术研究中心
近两年,笔者一直在努力开发一个名叫“XEdu”的开箱即用的人工智能开发工具。为了解决环境搭建的问题,笔者借助Conda(一个开源的软件包管理系统)封装了一个绿色软件,用户只要一解压,就拥有了深度学习的编程环境。很多信息科技(技术)教师看到这个“XEdu一键安装包”后,想到可以用这样的方法将中小学常见的Python库封装起来,然后形成一个定制的教学环境,省去维护上的很多成本。
中小学新版的信息科技教材几乎都选择了Python,Python是一个开源编程语言,拥有很多IDE(编程集成环境),如IDLE、Anaconda、PyCharm、VSCode、Spyder、Sublime、Atom和Thonny等,那为什么一线教学还会提出定制教学环境的需求呢?
Python的IDE种类繁多,各有各的特点,且功能使用差别较大,教师们难免患上选择困难症。IDE本身没有优劣之分,主要是看用户需求。高校的数据科学、人工智能课程一般推荐Anaconda,而工程师和程序员往往选择PyCharm和VSCode。对于教学来来说,Jupyter Notebook的文本和代码相结合方式特别适合做“学案”。对于初学入门的学生来说,界面简洁干净的Thonny则是最佳选择。
虽然IDE很多,但为中小学信息科技教学设计的Python IDE很少。中小学的Python学习应该聚焦在编程和算法上,而弱化软件附加的功能。程序员选择PyCharm和VSCode,是因为开发工程需要项目管理、版本管理方面的功能;而信息科技教学一般不会写很复杂的代码,不会去开发信息系统,也不需要太复杂的辅助工具。
Python的最大特点是拥有无穷无尽的第三方库或者模块,教学中往往需要用PIP工具安装各种库。因为Windows系统不带完整的编译工具,对于一些没有预编译的库或者依赖关系比较复杂的库,往往容易安装失败。而信息科技的教学环境一般在机房,如果一开始没有把可能涉及的库都装好,那么每一次开机都要重新安装。这不仅需要足够的网络带宽,还很浪费时间。
因此,一线信息科技教师会期望有一个工具,可以将信息科技教学中常用的库文件全部内置,并且内置Jupyter、Thonny和常见的第三方库。只要解压,就能使用,既方便教师部署机房环境,也方便学生在家自学。
XEdu之所以能做到将编程环境打包为一个文件,是因为借助了“anconda”(一个著名的Python IDE)中的“conda-pack”。顾名思义,“conda-pack”就是一个环境打包的工具,其使用的大致步骤如下:
第一步:安装conda环境。
下载miniconda安装包并安装(https://docs.conda.io/en/latest/miniconda.html#)。
第二步:构建一个新的Python环境,如笔者取名为“env”的环境。
在conda的PowerShell Prompt(下面简称为“Prompt”)中输入conda create-n env python=3.8.3-y
在Prompt中继续输入命令conda activate env,激活环境“env”。
第三步:安装所需要的各种库文件。
在Prompt中继续输入pip install XEdu-python MMEdu BaseNN BaseDT BaseML BaseDeploy。
在Prompt中继续安装Jupyter和Thonny:pip install jupyter notebook thonny==4.0.0。
以此类推,完成所有的第三方库的安装。
第四步:打包编程环境。
在Prompt中继续输入conda pack-n env-o env.tar.gz。
由于环境打包只能是tar.gz格式,对Windows支持不友好,等待打包完成后,再使用解压软件解压,然后做一些细节调整,最后压缩成自解压文件。
第五步:为编程环境添加启动脚本文件。
要想激活这个Python环境,还需要在命令行中执行envScriptsactivate.bat,为了让学生有更好的体验,可以把这个命令行指令封装成为启动脚本文件。
封装的IDLE启动脚本文件,如图1所示。同样,可以封装出启动CMD脚本,如图2所示。
图1
图2
对Thonny和Jupyter Notebook的启动,需要稍做一些处理,以避免和计算机上已经安装的旧环境产生冲突。具体的脚本内容有点长,这里略过。
第六步:压缩为自释放文件。
利用7zip、WinRAR等工具,将整个目录打包为自解压文件。
在明确了定制编程环境的方案后,核心的工作就是确定需要预装哪些库。
考虑到XEdu的定位是人工智能教育的工具包,那么XEdu-Python、MMEdu、BaseDT、BaseNN、BaseML和BaseDeploy是必备的核心库。因为依赖关系,在安装这些库时会自动安装另外一些库,如opencv-python、numpy、pandas、matplotlib、scikit-learn、pillow、requests、onnxruntime和tqdm等。
上面列出的库,已经覆盖了绝大多数信息科技教材涉及的库。考虑到不可能将全国的教材都全部整理一遍,因此笔者以浙江教育出版社的高中教材和清华大学出版社的初中教材为主,又加入了如下一些库:pyinstaller、flask、pyautogui、pypinyin、gradio、tkinter、wordcloud、jieba、pywebio、pyttx3、pinpong、pysmplegui、remi、turtle等。
此外,笔者认为需要规范学生的代码和相关文件存放习惯,于是梳理了文件目录。如图3所示,其中checkpoints是存放AI训练的权重文件的,dataset是存放数据集的,EasyDL是简易深度学习软件系列,env是Python的运行环境和库文件,utils是一些可能需要的内置功能,XEdu示例代码是XEdu系列人工智能教学所需的代码文件,教学资源则供教师存放各种配套的资源。
图3
笔者将这个解压就可以使用的Python编程环境,命名为“XEdu信息科技教学版”,并提供给身边熟悉的信息技术教师使用。目前得到了不错的使用反馈,尤其是兼容性很好,在Win7(64位)系统上运行正常。这一编程环境不仅可以用于信息科技教学,还可以用于人工智能科创活动。
针对部分教师给出的反馈,需要让Jupyter Notebook支持中文,笔者在Jupyter Notebook的启动脚本中增加了“set LANG=zh_CN.UTF8”,同时再次修改了一些细节,包括去除thonny文件的标语等。
当完成这个“XEdu信息科技教学版”后,笔者心情特别好,因为教师们掌握了解决方案和技术后,编程环境完全可以根据自己的需求来定制。信息科技教师的幸福要由自己来掌握。