謝作如 溫州科技高級(jí)中學(xué)
邱奕盛 華東師范大學(xué)教育信息技術(shù)學(xué)系/上海數(shù)字化教育裝備工程技術(shù)研究中心
近兩年,筆者一直在努力開發(fā)一個(gè)名叫“XEdu”的開箱即用的人工智能開發(fā)工具。為了解決環(huán)境搭建的問題,筆者借助Conda(一個(gè)開源的軟件包管理系統(tǒng))封裝了一個(gè)綠色軟件,用戶只要一解壓,就擁有了深度學(xué)習(xí)的編程環(huán)境。很多信息科技(技術(shù))教師看到這個(gè)“XEdu一鍵安裝包”后,想到可以用這樣的方法將中小學(xué)常見的Python庫(kù)封裝起來,然后形成一個(gè)定制的教學(xué)環(huán)境,省去維護(hù)上的很多成本。
中小學(xué)新版的信息科技教材幾乎都選擇了Python,Python是一個(gè)開源編程語言,擁有很多IDE(編程集成環(huán)境),如IDLE、Anaconda、PyCharm、VSCode、Spyder、Sublime、Atom和Thonny等,那為什么一線教學(xué)還會(huì)提出定制教學(xué)環(huán)境的需求呢?
Python的IDE種類繁多,各有各的特點(diǎn),且功能使用差別較大,教師們難免患上選擇困難癥。IDE本身沒有優(yōu)劣之分,主要是看用戶需求。高校的數(shù)據(jù)科學(xué)、人工智能課程一般推薦Anaconda,而工程師和程序員往往選擇PyCharm和VSCode。對(duì)于教學(xué)來來說,Jupyter Notebook的文本和代碼相結(jié)合方式特別適合做“學(xué)案”。對(duì)于初學(xué)入門的學(xué)生來說,界面簡(jiǎn)潔干凈的Thonny則是最佳選擇。
雖然IDE很多,但為中小學(xué)信息科技教學(xué)設(shè)計(jì)的Python IDE很少。中小學(xué)的Python學(xué)習(xí)應(yīng)該聚焦在編程和算法上,而弱化軟件附加的功能。程序員選擇PyCharm和VSCode,是因?yàn)殚_發(fā)工程需要項(xiàng)目管理、版本管理方面的功能;而信息科技教學(xué)一般不會(huì)寫很復(fù)雜的代碼,不會(huì)去開發(fā)信息系統(tǒng),也不需要太復(fù)雜的輔助工具。
Python的最大特點(diǎn)是擁有無窮無盡的第三方庫(kù)或者模塊,教學(xué)中往往需要用PIP工具安裝各種庫(kù)。因?yàn)閃indows系統(tǒng)不帶完整的編譯工具,對(duì)于一些沒有預(yù)編譯的庫(kù)或者依賴關(guān)系比較復(fù)雜的庫(kù),往往容易安裝失敗。而信息科技的教學(xué)環(huán)境一般在機(jī)房,如果一開始沒有把可能涉及的庫(kù)都裝好,那么每一次開機(jī)都要重新安裝。這不僅需要足夠的網(wǎng)絡(luò)帶寬,還很浪費(fèi)時(shí)間。
因此,一線信息科技教師會(huì)期望有一個(gè)工具,可以將信息科技教學(xué)中常用的庫(kù)文件全部?jī)?nèi)置,并且內(nèi)置Jupyter、Thonny和常見的第三方庫(kù)。只要解壓,就能使用,既方便教師部署機(jī)房環(huán)境,也方便學(xué)生在家自學(xué)。
XEdu之所以能做到將編程環(huán)境打包為一個(gè)文件,是因?yàn)榻柚恕癮nconda”(一個(gè)著名的Python IDE)中的“conda-pack”。顧名思義,“conda-pack”就是一個(gè)環(huán)境打包的工具,其使用的大致步驟如下:
第一步:安裝conda環(huán)境。
下載miniconda安裝包并安裝(https://docs.conda.io/en/latest/miniconda.html#)。
第二步:構(gòu)建一個(gè)新的Python環(huán)境,如筆者取名為“env”的環(huán)境。
在conda的PowerShell Prompt(下面簡(jiǎn)稱為“Prompt”)中輸入conda create-n env python=3.8.3-y
在Prompt中繼續(xù)輸入命令conda activate env,激活環(huán)境“env”。
第三步:安裝所需要的各種庫(kù)文件。
在Prompt中繼續(xù)輸入pip install XEdu-python MMEdu BaseNN BaseDT BaseML BaseDeploy。
在Prompt中繼續(xù)安裝Jupyter和Thonny:pip install jupyter notebook thonny==4.0.0。
以此類推,完成所有的第三方庫(kù)的安裝。
第四步:打包編程環(huán)境。
在Prompt中繼續(xù)輸入conda pack-n env-o env.tar.gz。
由于環(huán)境打包只能是tar.gz格式,對(duì)Windows支持不友好,等待打包完成后,再使用解壓軟件解壓,然后做一些細(xì)節(jié)調(diào)整,最后壓縮成自解壓文件。
第五步:為編程環(huán)境添加啟動(dòng)腳本文件。
要想激活這個(gè)Python環(huán)境,還需要在命令行中執(zhí)行envScriptsactivate.bat,為了讓學(xué)生有更好的體驗(yàn),可以把這個(gè)命令行指令封裝成為啟動(dòng)腳本文件。
封裝的IDLE啟動(dòng)腳本文件,如圖1所示。同樣,可以封裝出啟動(dòng)CMD腳本,如圖2所示。

圖1

圖2
對(duì)Thonny和Jupyter Notebook的啟動(dòng),需要稍做一些處理,以避免和計(jì)算機(jī)上已經(jīng)安裝的舊環(huán)境產(chǎn)生沖突。具體的腳本內(nèi)容有點(diǎn)長(zhǎng),這里略過。
第六步:壓縮為自釋放文件。
利用7zip、WinRAR等工具,將整個(gè)目錄打包為自解壓文件。
在明確了定制編程環(huán)境的方案后,核心的工作就是確定需要預(yù)裝哪些庫(kù)。
考慮到XEdu的定位是人工智能教育的工具包,那么XEdu-Python、MMEdu、BaseDT、BaseNN、BaseML和BaseDeploy是必備的核心庫(kù)。因?yàn)橐蕾囮P(guān)系,在安裝這些庫(kù)時(shí)會(huì)自動(dòng)安裝另外一些庫(kù),如opencv-python、numpy、pandas、matplotlib、scikit-learn、pillow、requests、onnxruntime和tqdm等。
上面列出的庫(kù),已經(jīng)覆蓋了絕大多數(shù)信息科技教材涉及的庫(kù)。考慮到不可能將全國(guó)的教材都全部整理一遍,因此筆者以浙江教育出版社的高中教材和清華大學(xué)出版社的初中教材為主,又加入了如下一些庫(kù):pyinstaller、flask、pyautogui、pypinyin、gradio、tkinter、wordcloud、jieba、pywebio、pyttx3、pinpong、pysmplegui、remi、turtle等。
此外,筆者認(rèn)為需要規(guī)范學(xué)生的代碼和相關(guān)文件存放習(xí)慣,于是梳理了文件目錄。如圖3所示,其中checkpoints是存放AI訓(xùn)練的權(quán)重文件的,dataset是存放數(shù)據(jù)集的,EasyDL是簡(jiǎn)易深度學(xué)習(xí)軟件系列,env是Python的運(yùn)行環(huán)境和庫(kù)文件,utils是一些可能需要的內(nèi)置功能,XEdu示例代碼是XEdu系列人工智能教學(xué)所需的代碼文件,教學(xué)資源則供教師存放各種配套的資源。

圖3
筆者將這個(gè)解壓就可以使用的Python編程環(huán)境,命名為“XEdu信息科技教學(xué)版”,并提供給身邊熟悉的信息技術(shù)教師使用。目前得到了不錯(cuò)的使用反饋,尤其是兼容性很好,在Win7(64位)系統(tǒng)上運(yùn)行正常。這一編程環(huán)境不僅可以用于信息科技教學(xué),還可以用于人工智能科創(chuàng)活動(dòng)。
針對(duì)部分教師給出的反饋,需要讓Jupyter Notebook支持中文,筆者在Jupyter Notebook的啟動(dòng)腳本中增加了“set LANG=zh_CN.UTF8”,同時(shí)再次修改了一些細(xì)節(jié),包括去除thonny文件的標(biāo)語等。
當(dāng)完成這個(gè)“XEdu信息科技教學(xué)版”后,筆者心情特別好,因?yàn)榻處焸冋莆樟私鉀Q方案和技術(shù)后,編程環(huán)境完全可以根據(jù)自己的需求來定制。信息科技教師的幸福要由自己來掌握。