這是用來(lái)記錄為了讓Scrapy、Jupyter能用,我怎樣填坑的,避免以后再入坑。
家里有臺(tái)老電腦,使用Windows7各種慢,這兩天一直在用mac跑數(shù)據(jù)有點(diǎn)心疼,遂決定廢物利用,在這臺(tái)機(jī)器上裝上Linux試試效果。
由于是32位機(jī)器(這給我?guī)?lái)了很多苦難),也幾乎沒(méi)有Linux功底,所以就安裝了有圖形界面的Ubuntu 16.04(16.04好像是系列里最后一代支持32位機(jī)的系統(tǒng))。
安裝好之后,系統(tǒng)自帶了python2.7和python3.5,這又是一個(gè)坑,在python3.5下裝了很久Scrapy,中間各種出錯(cuò),后來(lái)安裝了python3.7,輕松裝上。后續(xù)安裝PyCharm,由于3.5和3.7的關(guān)系,目前仍然只能用3.5,暫時(shí)夠用就不管了。
開(kāi)始到今天要說(shuō)的重點(diǎn):Jupyter Notebook
說(shuō)到Jupyter Notebook,不得不說(shuō)這真的是特別好用的一個(gè)平臺(tái),友好的界面,交互式的方式,非常適合做一些探索性的工作。
然鵝,待我在命令行中輸入“jupyter notebook”之后,打開(kāi)的頁(yè)面是這樣的:

你沒(méi)看錯(cuò),一塊白板。網(wǎng)上查了各種方法,都沒(méi)有用,依舊是白板。當(dāng)初忘記了是在3.5的時(shí)候用pip安裝的jupyter還是3.7下面安裝的,反正后面無(wú)數(shù)次刪除重新安裝都沒(méi)有用,直到在更多選項(xiàng)中發(fā)現(xiàn)如下錯(cuò)誤,才覺(jué)得可能不是jupyter包的問(wèn)題,可能是我的Chrome瀏覽器太老了,有些js的用法是不是不一致。由于Chrome支持32位的最新的只有48,和現(xiàn)在真正最新的Chrome 70+差的有點(diǎn)多。于是決定轉(zhuǎn)戰(zhàn)Firefox看看是不是可以解決。

轉(zhuǎn)戰(zhàn)Firefox第一步是通過(guò)在命令行中如下代碼生產(chǎn)jupyter config文件。
~$ jupyter notebook --generate-config
第二步是在文件中插入如下代碼,將jupyter notebook重定向到FireFox瀏覽器
import webbrowser
webbrowser.register(
"Firefox", #自定義名字
None,
webbrowser.GenericBrowser(u"/usr/bin/firefox"))#指定程序所在位置
c.NotebookApp.browser = "Firefox"
激動(dòng)人心的時(shí)候到來(lái)了,notebook主頁(yè)總算是打開(kāi)了。

然而我還沒(méi)高興3秒,又跪了。新建python3文件結(jié)果出來(lái)個(gè)500,打開(kāi)也不行。網(wǎng)上搜了一些,也還是解決不了問(wèn)題??戳隋e(cuò)誤之后,發(fā)現(xiàn)和Chrome類似,一時(shí)不知道要怎么解決。



覺(jué)得可能還是瀏覽器問(wèn)題,就開(kāi)始搜有沒(méi)有其他的瀏覽器可以嘗試,直接搜到了Jupyter Lab。
一頓安裝運(yùn)行之后,進(jìn)入了Jupyter Lab主界面,這次沒(méi)有太急著高興,果然又出了問(wèn)題,如下圖輸入“1+11“,同時(shí)按”Ctrl“+”Enter“按鍵,一點(diǎn)反應(yīng)都沒(méi)有。

這時(shí)候注意到界面右上角的”No Kernel“,點(diǎn)開(kāi)之后只有我的”Python 3“,想起之前看過(guò)一篇文章,說(shuō)可以在Jupyter Notebook中使用Python虛擬環(huán)境,于是乎趕快搜索并實(shí)驗(yàn)。
~$ set CONDA_FORCE_32BIT=1 #設(shè)置為32位環(huán)境
~$ conda create -n SciPython37 python=3.7 #新建一個(gè)名為SciPython37的32位虛擬環(huán)境
~$ conda activate SciPython37 # 您如SciPython37環(huán)境
~$ conda install ipykernel # 安裝ipykernel包到當(dāng)前的python環(huán)境中
~$ python -m ipykernel install --name SciPython37 # --name后加的參數(shù)即是在Jupyter Lab中顯示的名稱

可以看到在進(jìn)入SciPython37環(huán)境之后,命令行界面有所變化,從變成"(SciPython37)",說(shuō)明已經(jīng)在虛擬環(huán)境中。這時(shí)候再看Jupyter Lab的內(nèi)核選項(xiàng)中,已經(jīng)出現(xiàn)了我們新增的新環(huán)境。這個(gè)時(shí)候仿佛已經(jīng)看到了真正勝利的曙光。

這時(shí)候再運(yùn)行1+11,終于出現(xiàn)了結(jié)果,大功告成。

通過(guò)這次的折騰,再次發(fā)現(xiàn)遇到問(wèn)題時(shí)要不忘初心,不要忘記最開(kāi)始的目標(biāo)是什么。中間有段時(shí)間我一直在折騰PyCharm,想要解決3.7解釋器不能用的事,但是用了很長(zhǎng)時(shí)間沒(méi)有解決,后來(lái)想到對(duì)我而言Scrapy不需要用到PyCharm,其他的事情Jupyter能夠解決,就把時(shí)間轉(zhuǎn)到解決Jupyter的問(wèn)題上來(lái),而不是死磕,這期間浪費(fèi)了一些時(shí)間,好歹后面沒(méi)有再浪費(fèi)更多。