1. 程式人生 > >Jupyter Notebook介紹、安裝及使用教程

Jupyter Notebook介紹、安裝及使用教程

目錄

一、什麼是Jupyter Notebook?

1. 簡介

Jupyter Notebook是基於網頁的用於互動計算的應用程式。其可被應用於全過程計算:開發、文件編寫、執行程式碼和展示結果。——Jupyter Notebook官方介紹

簡而言之,Jupyter Notebook是以網頁的形式開啟,可以在網頁頁面中直接編寫程式碼和執行程式碼,程式碼的執行結果也會直接在程式碼塊下顯示。如在程式設計過程中需要編寫說明文件,可在同一個頁面中直接編寫,便於作及時的說明和解釋。

2. 組成部分

① 網頁應用

網頁應用即基於網頁形式的、結合了編寫說明文件、數學公式、互動計算和其他富媒體形式的工具。簡言之,網頁應用是可以實現各種功能的工具。

② 文件

即Jupyter Notebook中所有互動計算、編寫說明文件、數學公式、圖片以及其他富媒體形式的輸入和輸出,都是以文件的形式體現的。

這些文件是儲存為字尾名為.ipynbJSON格式檔案,不僅便於版本控制,也方便與他人共享。

此外,文件還可以匯出為:HTML、LaTeX、PDF等格式。

3. Jupyter Notebook的主要特點

  1. 程式設計時具有語法高亮縮排tab補全的功能。

  2. 可直接通過瀏覽器執行程式碼,同時在程式碼塊下方展示執行結果。

  3. 以富媒體格式展示計算結果。富媒體格式包括:HTML,LaTeX,PNG,SVG等。

  4. 對程式碼編寫說明文件或語句時,支援Markdown語法。

  5. 支援使用LaTeX編寫數學性說明。

二、安裝Jupyter Notebook

0. 先試用,再決定

如果看了以上對Jupyter Notebook的介紹你還是拿不定主意究竟是否適合你,那麼不要擔心,你可以先免安裝試用體驗一下,戳這裡,然後再做決定。

值得注意的是,官方提供的同時試用是有限的,如果你點選連結之後進入的頁面如下圖所示,那麼不要著急,過會兒再試試看吧。

 

試用失敗

如果你足夠幸運,那麼你將看到如下介面,就可以開始體驗啦。

主介面

 

試用成功

編輯頁面

 

編輯頁面

1. 安裝

① 安裝前提

安裝Jupyter Notebook的前提是需要安裝了Python(3.3版本及以上,或2.7版本)。

② 使用Anaconda安裝

如果你是小白,那麼建議你通過安裝Anaconda來解決Jupyter Notebook的安裝問題,因為Anaconda已經自動為你安裝了Jupter Notebook及其他工具,還有python中超過180個科學包及其依賴項。

你可以通過進入Anaconda的官方下載頁面自行選擇下載;如果你對閱讀英文文件感到頭痛,或者對安裝步驟一無所知,甚至也想快速瞭解一下什麼是Anaconda,那麼可以前往我的另一篇文章Anaconda介紹、安裝及使用教程。你想要的,都在裡面!

常規來說,安裝了Anaconda發行版時已經自動為你安裝了Jupyter Notebook的,但如果沒有自動安裝,那麼就在終端(Linux或macOS的“終端”,Windows的“Anaconda Prompt”,以下均簡稱“終端”)中輸入以下命令安裝:

conda install jupyter notebook

③ 使用pip命令安裝

如果你是有經驗的Python玩家,想要嘗試用pip命令來安裝Jupyter Notebook,那麼請看以下步驟吧!接下來的命令都輸入在終端當中的噢!

  1. 把pip升級到最新版本

    • Python 3.x
    pip3 install --upgrade pip
    
    • Python 2.x
    pip install --upgrade pip
    
  • 注意:老版本的pip在安裝Jupyter Notebook過程中或面臨依賴項無法同步安裝的問題。因此強烈建議先把pip升級到最新版本。
  1. 安裝Jupyter Notebook

    • Python 3.x
    pip3 install jupyter
    
    • Python 2.x
    pip install jupyter
    

三、執行Jupyter Notebook

0. 幫助

如果你有任何jupyter notebook命令的疑問,可以考慮檢視官方幫助文件,命令如下:

jupyter notebook --help

jupyter notebook -h

1. 啟動

① 預設埠啟動

在終端中輸入以下命令:

jupyter notebook

執行命令之後,在終端中將會顯示一系列notebook的伺服器資訊,同時瀏覽器將會自動啟動Jupyter Notebook。

啟動過程中終端顯示內容如下:

$ jupyter notebook
[I 08:58:24.417 NotebookApp] Serving notebooks from local directory: /Users/catherine
[I 08:58:24.417 NotebookApp] 0 active kernels
[I 08:58:24.417 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I 08:58:24.417 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
  • 注意:之後在Jupyter Notebook的所有操作,都請保持終端不要關閉,因為一旦關閉終端,就會斷開與本地伺服器的連結,你將無法在Jupyter Notebook中進行其他操作啦。

瀏覽器位址列中預設地將會顯示:http://localhost:8888。其中,“localhost”指的是本機,“8888”則是埠號。

URL

 

如果你同時啟動了多個Jupyter Notebook,由於預設埠“8888”被佔用,因此位址列中的數字將從“8888”起,每多啟動一個Jupyter Notebook數字就加1,如“8889”、“8890”……

② 指定埠啟動

如果你想自定義埠號來啟動Jupyter Notebook,可以在終端中輸入以下命令:

jupyter notebook --port <port_number>

其中,“<port_number>”是自定義埠號,直接以數字的形式寫在命令當中,數字兩邊不加尖括號“<>”。如:jupyter notebook --port 9999,即在埠號為“9999”的伺服器啟動Jupyter Notebook。

③ 啟動伺服器但不開啟瀏覽器

如果你只是想啟動Jupyter Notebook的伺服器但不打算立刻進入到主頁面,那麼就無需立刻啟動瀏覽器。在終端中輸入:

jupyter notebook --no-browser

此時,將會在終端顯示啟動的伺服器資訊,並在伺服器啟動之後,顯示出開啟瀏覽器頁面的連結。當你需要啟動瀏覽器頁面時,只需要複製連結,並貼上在瀏覽器的位址列中,輕按回車變轉到了你的Jupyter Notebook頁面。

 

no_browser

例圖中由於在完成上面內容時我同時啟動了多個Jupyter Notebook,因此顯示我的“8888”埠號被佔用,最終分配給我的是“8889”。

2. 主頁面

① 主頁面內容

當執行完啟動命令之後,瀏覽器將會進入到Notebook的主頁面,如下圖所示。

 

Notebook Dashboard

如果你的主頁面裡邊的資料夾跟我的不同,或者你在疑惑為什麼首次啟動裡邊就已經有這麼多資料夾,不要擔心,這裡邊的資料夾全都是你的家目錄裡的目錄檔案。你可以在終端中執行以下2步來檢視:

cdcd -cd ~cd /Users/<user_name>

  • 這個命令將會進入你的家目錄。

  • “<user_name>” 是使用者名稱。使用者名稱兩邊不加尖括號“<>”。

ls

  • 這個命令將會展示你家目錄下的檔案。

② 設定Jupyter Notebook檔案存放位置

如果你不想把今後在Jupyter Notebook中編寫的所有文件都直接儲存在家目錄下,那你需要修改Jupyter Notebook的檔案存放路徑。

⑴ 建立資料夾/目錄

  • Windows使用者在想要存放Jupyter Notebook檔案的磁碟新建資料夾併為該資料夾命名;雙擊進入該資料夾,然後複製位址列中的路徑。

  • Linux/macOS使用者在想要存放Jupyter Notebook檔案的位置建立目錄併為目錄命名,命令為:mkdir <directory_name>;進入目錄,命令為:cd <directory_name>;檢視目錄的路徑,命令為:pwd;複製該路徑。

  • 注意:“<directory_name>”是自定義的目錄名。目錄名兩邊不加尖括號“<>”。

⑵ 配置檔案路徑

  • 一個便捷獲取配置檔案所在路徑的命令:
jupyter notebook --generate-config
  • 注意: 這條命令雖然可以用於檢視配置檔案所在的路徑,但主要用途是是否將這個路徑下的配置檔案替換預設配置檔案
    如果你是第一次查詢,那麼或許不會出現下圖的提示;若檔案已經存在或被修改,使用這個命令之後會出現詢問“Overwrite /Users/raxxie/.jupyter/jupyter_notebook_config.py with default config? [y/N]”,即“用預設配置檔案覆蓋此路徑下的檔案嗎?”,如果按“y”,則完成覆蓋,那麼之前所做的修改都將失效;如果只是為了查詢路徑,那麼一定要輸入“N”。

命令

常規的情況下,Windows和Linux/macOS的配置檔案所在路徑和配置檔名如下所述:

  • Windows系統的配置檔案路徑:C:\Users\<user_name>\.jupyter\

  • Linux/macOS系統的配置檔案路徑:/Users/<user_name>/.jupyter/~/.jupyter/

  • 配置檔名:jupyter_notebook_config.py

  • 注意:

① “<user_name>”為你的使用者名稱。使用者名稱兩邊不加尖括號“<>”。

② Windows和Linux/macOS系統的配置檔案存放路徑其實是相同的,只是系統不同,表現形式有所不同而已。

③ Windows和Linux/macOS系統的配置檔案也是相同的。檔名以“.py”結尾,是Python的可執行檔案。

④ 如果你不是通過一步到位的方式前往配置檔案所在位置,而是一層一層進入資料夾/目錄的,那麼當你進入家目錄後,用ls命令會發現找不到“.jupyter”資料夾/目錄。這是因為凡是以“.”開頭的目錄都是隱藏檔案,你可以通過ls -a命令檢視當前位置下所有的隱藏檔案。

⑶ 修改配置檔案

  • Windows系統的使用者可以使用文件編輯工具或IDE開啟“jupyter_notebook_config.py”檔案並進行編輯。常用的文件編輯工具和IDE有記事本、Notepad++、vim、Sublime Text、PyCharm等。其中,vim是沒有圖形介面的,是一款學習曲線較為陡峭的編輯器,其他工具在此不做使用說明,因為上手相對簡單。通過vim修改配置檔案的方法請繼續往下閱讀。

  • Linux/macOS系統的使用者建議直接通過終端呼叫vim來對配置檔案進行修改。具體操作步驟如下:

⒜ 開啟配置檔案

開啟終端,輸入命令:

vim ~/.jupyter/jupyter_notebook_config.py

vim開啟配置檔案

執行上述命令後便進入到配置檔案當中了。

⒝ 查詢關鍵詞

進入配置檔案後查詢關鍵詞“c.NotebookApp.notebook_dir”。查詢方法如下:

進入配置檔案後不要按其他鍵,用英文半形直接輸入/c.NotebookApp.notebook_dir,這時搜尋的關鍵詞已在文件中高亮顯示了,按回車,游標從底部切換到文件正文中被查詢關鍵詞的首字母。

⒞ 編輯配置檔案

小寫i進入編輯模式,底部出現“--INSERT--”說明成功進入編輯模式。使用方向鍵把游標定位在第二個單引號上(游標定位在哪個字元,就在這個字元前開始輸入),把“⑴ 建立資料夾/目錄”步驟中複製的路徑貼上在此處。

⒟ 取消註釋

把該行行首的井號(#)刪除。因為配置檔案是Python的可執行檔案,在Python中,井號(#)表示註釋,即在編譯過程中不會執行該行命令,所以為了使修改生效,需要刪除井號(#)。

config

 

⒠ 儲存配置檔案

先按ESC鍵,從編輯模式退出,回到命令模式。

再用英文半形直接輸入:wq,回車即成功儲存且退出了配置檔案。

注意:

  • 冒號(:) 一定要有,且也是英文半形
  • w:儲存。
  • q:退出。

⒡ 驗證

在終端中輸入命令jupyter notebook開啟Jupyter Notebook,此時你會看到一個清爽的介面,恭喜!

modified

 

⒢ 注意

  • 以上所有命令均以英文半形格式輸入,若有報錯,請嚴格檢查這兩個條件,英文半形

  • 這裡僅介紹了vim編輯器修改配置檔案的方法,沒有對vim編輯器的詳細使用進行講解,所以無需瞭解vim編輯器的具體使用方法,只需要按照上述步驟一定可以順利完成修改!

  • 推薦有時間和經歷時學習一下vim編輯器的使用。這款強大的編輯器將會成為你未來工作中的利器。

四、Jupyter Notebook的基本使用

1. Files頁面

Files頁面

此時你的介面當中應該還沒有“Conda”和“Nbextensions”類目。不要著急,這兩個類目將分別在“五、拓展功能”中的“1.關聯Jupyter Notebook和conda的環境和包——‘nb_conda’”和“2.Markdown生成目錄”中安裝。

Files頁面是用於管理和建立檔案相關的類目。

對於現有的檔案,可以通過勾選檔案的方式,對選中檔案進行復制、重新命名、移動、下載、檢視、編輯和刪除的操作。

同時,也可以根據需要,在“New”下拉列表中選擇想要建立檔案的環境,進行建立“ipynb”格式的筆記本、“txt”格式的文件、終端或資料夾。如果你建立的環境沒有在下拉列表中顯示,那麼你需要依次前往“五、拓展功能”中的“1.關聯Jupyter Notebook和conda的環境和包——‘nb_conda’”和“六、增加核心——‘ipykernel’”中解決該問題。

① 筆記本的基本操作

筆記本的使用

上圖展示的是筆記本的基本結構和功能。根據圖中的註解已經可以解決絕大多數的使用問題了!

工具欄的使用如圖中的註解一樣直觀,在此不過多解釋。需要特別說明的是“單元格的狀態”,有Code,Markdown,Heading,Raw NBconvert。其中,最常用的是前兩個,分別是程式碼狀態,Markdown編寫狀態。Jupyter Notebook已經取消了Heading狀態,即標題單元格。取而代之的是Markdown的一級至六級標題。而Raw NBconvert目前極少用到,此處也不做過多講解。

選單欄涵蓋了筆記本的所有功能,即便是工具欄的功能,也都可以在選單欄的類目裡找到。然而,並不是所有功能都是常用的,比如Widgets,Navigate。Kernel類目的使用,主要是對核心的操作,比如中斷、重啟、連線、關閉、切換核心等,由於我們在建立筆記本時已經選擇了核心,因此切換核心的操作便於我們在使用筆記本時切換到我們想要的核心環境中去。由於其他的功能相對比較常規,根據圖中的註解來嘗試使用筆記本的功能已經非常便捷,因此不再做詳細講解。

② 筆記本重新命名的兩種方式

⑴ 筆記本內部重新命名

在使用筆記本時,可以直接在其內部進行重新命名。在左上方“Jupyter”的圖示旁有程式預設的標題“Untitled”,點選“Untitled”然後在彈出的對話方塊中輸入自擬的標題,點選“Rename”即完成了重新命名。

⑵ 筆記本外部重新命名

若在使用筆記本時忘記了重新命名,且已經儲存並退出至“Files”介面,則在“Files”介面勾選需要重新命名的檔案,點選“Rename”然後直接輸入自擬的標題即可。

⑶ 演示

重新命名

2. Running頁面

Running頁面主要展示的是當前正在運行當中的終端和“ipynb”格式的筆記本。若想要關閉已經開啟的終端和“ipynb”格式的筆記本,僅僅關閉其頁面是無法徹底退出程式的,需要在Running頁面點選其對應的“Shutdown”。更多關閉方法可以查閱“八、關閉和退出”中的“1.關閉筆記本和終端

Running

3. Clusters頁面

Clusters tab is now provided by IPython parallel. See 'IPython parallel' for installation details.

Clusters類目現在已由IPython parallel對接,且由於現階段使用頻率較低,因此在此不做詳細說明,想要了解更多可以訪問IPython parallel的官方網站

4. Conda頁面

Conda頁面主要是Jupyter Notebook與Conda關聯之後對Conda環境和包進行直接操作和管理的頁面工具。詳細資訊請直接查閱“五、拓展功能”中的“1.關聯Jupyter Notebook和conda的環境和包——‘nb_conda’”。這是目前使用Jupyter Notebook的必備環節,因此請務必查閱。

5. Nbextensions頁面

nbextensions

Nbextensions頁面提供了多個Jupyter Notebook的外掛,使其功能更加強大。該頁面中主要使用的外掛有nb_conda,nb_present,Table of Contents(2)。這些功能我們無需完全掌握,也無需安裝所有的擴充套件功能,根據本文件提供的學習思路,我們只需要安裝Talbe of Contents(2)即可,該功能可為Markdown文件提供目錄導航,便於我們編寫文件。該安裝指導請查閱“五、拓展功能”中的“2.Markdown生成目錄”。

五、拓展功能

<a id=conda></a>

1. 關聯Jupyter Notebook和conda的環境和包——“nb_conda”☆

① 安裝

conda install nb_conda

執行上述命令能夠將你conda建立的環境與Jupyter Notebook相關聯,便於你在Jupyter Notebook的使用中,在不同的環境下建立筆記本進行工作。

② 使用

  • 可以在Conda類目下對conda環境和包進行一系列操作。

     

    conda類目

  • 可以在筆記本內的“Kernel”類目裡的“Change kernel”切換核心。

     

    切換核心

③ 解除安裝

canda remove nb_conda

執行上述命令即可解除安裝nb_conda包。

<a id=nbextensions></a>

2. Markdown生成目錄

  • 不同於有道雲筆記的Markdown編譯器,Jupyter Notebook無法為Markdown文件通過特定語法新增目錄,因此需要通過安裝擴充套件來實現目錄的新增。
conda install -c conda-forge jupyter_contrib_nbextensions
  • 執行上述命令後,啟動Jupyter Notebook,你會發現導航欄多了“Nbextensions”的類目,點選“Nbextensions”,勾選“Table of Contents ⑵”

     

    nbextensions

  • 之後再在Jupyter Notebook中使用Markdown,點選下圖的圖示即可使用啦。

     

    新增目錄

3. Markdown在文中設定連結並定位

在使用Markdown編輯文件時,難免會遇到需要在文中設定連結,定位在文件中的其他位置便於檢視。因為Markdown可以完美的相容html語法,因此這種功能可以通過html語法當中“a標籤”的索引用法來實現。

語法格式如下:

[新增連結的正文](#自定義索引詞)
<a id=自定義索引詞>跳轉提示</a>
  • 注意:

    1. 語法格式當中所有的符號均是英文半形
    2. “自定義索引詞”最好是英文,較長的詞可以用下劃線連線。
    3. “a標籤”出現在想要被跳轉到的文章位置,html標籤除了單標籤外均要符合“有頭(<a>)必有尾(</a>)”的原則。頭尾之間的“跳轉提示”是可有可無的。
    4. “a標籤”中的“id”值即是為正文中新增連結時設定的“自定義索引值”,這裡通過“id”的值實現從正文的連結跳轉至指定位置的功能。
  • 例:

    1. 有跳轉提示語

       

      有提示語

    2. 無跳轉提示語

       

      無提示語

4. 載入指定網頁原始碼

① 使用場景

想要在Jupyter Notebook中直接載入指定網站的原始碼到筆記本中。

② 方法

執行以下命令:

%load URL

其中,URL為指定網站的地址。

③ 例

載入指定網站原始碼

5. 載入本地Python檔案

① 使用場景

想在Jupyter Notebook中載入本地的Python檔案並執行檔案程式碼。

② 方法

執行以下命令:

%load Python檔案的絕對路徑

③ 注意

  1. Python檔案的字尾為“.py”。
  2. “%load”後跟的是Python檔案的絕對路徑
  3. 輸入命令後,可以按CTRL 回車來執行命令。第一次執行,是將本地的Python檔案內容載入到單元格內。此時,Jupyter Notebook會自動將“%load”命令註釋掉(即在前邊加井號“#”),以便在執行已載入的檔案程式碼時不重複執行該命令;第二次執行,則是執行已載入檔案的程式碼。

④ 例

載入本地Python檔案

6. 直接執行本地Python檔案

① 使用場景

不想在Jupyter Notebook的單元格中載入本地Python檔案,想要直接執行。

② 方法

執行命令:

%run Python檔案的絕對路徑

!python3 Python檔案的絕對路徑

!python Python檔案的絕對路徑

③ 注意

  1. Python檔案的字尾為“.py”。
  2. “%run”後跟的是Python檔案的絕對路徑
  3. “!python3”用於執行Python 3.x版本的程式碼。
  4. “!python”用於執行Python 2.x版本的程式碼。
  5. “!python3”和“!python”屬於 !shell命令 語法的使用,即在Jupyter Notebook中執行shell命令的語法。
  6. 輸入命令後,可以按 CTRL 回車 來執行命令,執行過程中將不顯示本地Python檔案的內容,直接顯示執行結果。

④ 例

直接執行Python檔案

7. 在Jupyter Notebook中獲取當前位置

① 使用場景

想要在Jupyter Notebook中獲取當前所在位置的絕對路徑

② 方法

%pwd

!pwd

③ 注意

  1. 獲取的位置是當前Jupyter Notebook中建立的筆記本所在位置,且該位置為絕對路徑
  2. “!pwd”屬於 !shell命令 語法的使用,即在Jupyter Notebook中執行shell命令的語法。

④ 例

獲取當前路徑

8. 在Jupyter Notebook使用shell命令

① 方法一——在筆記本的單元格中

⑴ 語法

!shell命令
  • 在Jupyter Notebook中的筆記本單元格中用英文感嘆號“!”後接shell命令即可執行shell命令。

⑵ 例

shell命令

② 方法二——在Jupyter Notebook中新建終端

⑴ 啟動方法

在Jupyter Notebook主介面,即“File”介面中點選“New”;在“New”下拉框中點選“Terminal”即新建了終端。此時終端位置是在你的家目錄,可以通過pwd命令查詢當前所在位置的絕對路徑。

⑵ 關閉方法

在Jupyter Notebook的“Running”介面中的“Terminals”類目中可以看到正在執行的終端,點選後邊的“Shutdown”即可關閉終端。

⑶ 例

終端

9. 隱藏筆記本輸入單元格

① 使用場景

在Jupyter Notebook的筆記本中無論是編寫文件還是程式設計,都有輸入(In [])和輸出(Out [])。當我們編寫的程式碼或文件使用的單元格較多時,有時我們只想關注輸出的內容而暫時不看輸入的內容,這時就需要隱藏輸入單元格而只顯示輸出單元格。

② 方法一

⑴ 程式碼

from IPython.display import display
from IPython.display import HTML
import IPython.core.display as di # Example: di.display_html('<h3>%s:</h3>' % str, raw=True)

# 這行程式碼的作用是:當文件作為HTML格式輸出時,將會預設隱藏輸入單元格。
di.display_html('<script>jQuery(function() {if (jQuery("body.notebook_app").length == 0) { jQuery(".input_area").toggle(); jQuery(".prompt").toggle();}});</script>', raw=True)

# 這行程式碼將會新增“Toggle code”按鈕來切換“隱藏/顯示”輸入單元格。
di.display_html('''<button onclick="jQuery('.input_area').toggle(); jQuery('.prompt').toggle();">Toggle code</button>''', raw=True)

在筆記本第一個單元格中輸入以上程式碼,然後執行,即可在該文件中使用“隱藏/顯示”輸入單元格功能。

  • 缺陷:此方法不能很好的適用於Markdown單元格。

⑵ 例

隱藏/顯示方法一

③ 方法二

⑴ 程式碼

from IPython.display import HTML

HTML('''<script>
code_show=true; 
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
} 
$( document ).ready(code_toggle);
</script>
<form action="javascript:code_toggle()"><input type="submit" value="Click here to toggle on/off the raw code."></form>''')

在筆記本第一個單元格中輸入以上程式碼,然後執行,即可在該文件中使用“隱藏/顯示”輸入單元格功能。

  • 缺陷:此方法不能很好的適用於Markdown單元格。

⑵ 例

隱藏/顯示方法二

10. 魔術命令

由於目前暫時用不到過多的魔術命令,因此暫時先參考官網的文件

<a id=ipykernel></a>

六、增加核心——“ipykernel” ☆

1. 使用場景

  1. 場景一:同時用不同版本的Python進行工作,在Jupyter Notebook中無法切換,即“New”的下拉選單中無法使用需要的環境。

  2. 場景二:建立了不同的虛擬環境(或許具有相同的Python版本但安裝的包不同),在Jupyter Notebook中無法切換,即“New”的下拉選單中無法使用需要的環境。

接下來將分別用“命令列模式”和“圖形介面模式”來解決以上兩個場景的問題。顧名思義,“命令列模式”即在終端中通過執行命令來一步步解決問題;“圖形介面模式”則是通過在Jupyter Notebook的網頁中通過滑鼠點選的方式解決上述問題。

其中,“圖形介面模式”的解決方法相對比較簡單快捷,如果對於急於解決問題,不需要知道執行原理的朋友,可以直接進入“3. 解決方法之圖形介面模式”來閱讀。

“命令列模式”看似比較複雜,且又劃分了使用場景,但通過這種方式來解決問題可以更好的瞭解其中的工作原理,比如,每進行一步操作對應的命令是什麼,而命令的執行是為了達到什麼樣的目的,這些可能都被封裝在圖形介面上的一個點選動作來完成了。對於想更深入瞭解其運作過程的朋友,可以接著向下閱讀。

2. 解決方法之命令列模式

① 同時使用不同版本的Python

⑴ 在Python 3中建立Python 2核心

⒜ pip安裝

  • 首先安裝Python 2的ipykernel包。
python2 -m pip install ipykernel
  • 再為當前使用者安裝Python 2的核心(ipykernel)。
python2 -m ipykernel install --user
  • 注意:“--user”引數的意思是針對當前使用者安裝,而非系統範圍內安裝。

⒝ conda安裝

  • 首先建立Python版本為2.x且具有ipykernel的新環境,其中“<env_name>”為自定義環境名,環境名兩邊不加尖括號“<>”。
conda create -n <env_name> python=2 ipykernel
  • 然後切換至新建立的環境。
Windows: activate <env_name>
Linux/macOS: source activate <env_name>
  • 當前使用者安裝Python 2的核心(ipykernel)。
python2 -m ipykernel install --user
  • 注意:“--user”引數的意思是針對當前使用者安裝,而非系統範圍內安裝。

⑵ 在Python 2中建立Python 3核心

⒜ pip安裝

  • 首先安裝Python 3的ipykernel包。
python3 -m pip install ipykernel
  • 再為當前使用者安裝Python 2的核心(ipykernel)。
python3 -m ipykernel install --user
  • 注意:“--user”引數的意思是針對當前使用者安裝,而非系統範圍內安裝。

⒝ conda安裝

  • 首先建立Python版本為3.x且具有ipykernel的新環境,其中“<env_name>”為自定義環境名,環境名兩邊不加尖括號“<>”。
conda create -n <env_name> python=3 ipykernel
  • 然後切換至新建立的環境。
Windows: activate <env_name>
Linux/macOS: source activate <env_name>
  • 當前使用者安裝Python 3的核心(ipykernel)。
python3 -m ipykernel install --user
  • 注意:“--user”引數的意思是針對當前使用者安裝,而非系統範圍內安裝。

② 為不同環境建立核心

⑴ 切換至需安裝核心的環境

Windows: activate <env_name>
Linux/macOS: source activate <env_name>
  • 注意:“<env_name>”是需要安裝核心的環境名稱,環境名兩邊不加尖括號“<>”。

⑵ 檢查該環境是否安裝了ipykernel包

conda list

執行上述命令檢視當前環境下安裝的包,若沒有安裝ipykernel包,則執行安裝命令;否則進行下一步。

conda install ipykernel

⑶ 為當前環境下的當前使用者安裝Python核心

  • 若該環境的Python版本為2.x,則執行命令:
python2 -m ipykernel install --user --name <env_name> --display-name "<notebook_name>"
  • 若該環境的Python版本為3.x,則執行命令:
python3 -m ipykernel install --user --name <env_name> --display-name "<notebook_name>"
  • 注意:
    1. “<env_name>”為當前環境的環境名稱。環境名兩邊不加尖括號“<>”。

    2. “<notebook_name>”為自定義顯示在Jupyter Notebook中的名稱。名稱兩邊不加尖括號“<>”,但雙引號必須加

    3. “--name”引數的值,即“<env_name>”是Jupyter內部使用的,其目錄的存放路徑為~/Library/Jupyter/kernels/。如果定義的名稱在該路徑已經存在,那麼將自動覆蓋該名稱目錄的內容。

    4. “--display-name”引數的值是顯示在Jupyter Notebook的選單中的名稱。

⑷ 檢驗

使用命令jupyter notebook啟動Jupyter Notebook;在“Files”下的“New”下拉框中即可找到你在第⑶步中的自定義名稱,此時,你便可以盡情地在Jupyter Notebook中切換環境,在不同的環境中建立筆記本進行工作和學習啦!

<a id=gui></a>

3. 解決方法之圖形介面模式

① 你建立了一個新的環境,但卻發現在Jupyter Notebook的“New”中找不到這個環境,無法在該環境中建立筆記本。

 

圖形介面_問題

② 進入Jupyter Notebook → Conda → 在“Conda environment”中點選你要新增ipykernel包的環境 → 左下方搜尋框輸入“ipykernel” → 勾選“ipykernel” → 點選搜尋框旁的“→”箭頭 → 安裝完畢 → 右下方框內找到“ipykernel”說明已經安裝成功。

圖形介面_解決

③ 在終端CTRL C關閉Jupyter Notebook的伺服器然後重啟Jupyter Notebook,在“File”的“New”的下拉列表裡就可以找到你的環境啦。

圖形介面_驗證

七、Jupyter Notebook快捷鍵

1. Mac與Windows特殊按鍵對照表

符號 Mac按鍵 Windows按鍵
command
control ctrl
option alt
shift shift
return return
space space
tab tab
delete backspace
fn delete delete
- - -

2. Jupyter Notebook筆記本的兩種模式

① 命令模式

  • 命令模式將鍵盤命令與Jupyter Notebook筆記本命令相結合,可以通過鍵盤不同鍵的組合執行筆記本的命令。

  • esc鍵進入命令模式。

  • 命令模式下,單元格邊框為灰色,且左側邊框線為藍色粗線條。

命令模式

② 編輯模式

  • 編輯模式使使用者可以在單元格內編輯程式碼或文件。

  • enterreturn鍵進入編輯模式。

  • 編輯模式下,單元格邊框和左側邊框線均為綠色。

編輯模式

3. 兩種模式的快捷鍵

① 命令模式

快捷鍵 用途
F 查詢和替換
進入編輯模式
⌘⇧F 開啟命令選項板
⌘⇧P 開啟命令選項板
P 開啟命令選項板
⇧↩ 運行當前單元格並選中下一個單元格
⌃↩ 執行選中單元格
⌥↩ 運行當前單元格並且在下方插入單元格
Y 將單元格切換至code狀態
M 將單元格切換至markdown狀態
R 將單元格切換至raw狀態
1 將單元格設定一級標題
2 將單元格設定二級標題
3 將單元格設定三級標題
4 將單元格設定四級標題
5 將單元格設定五級標題
6 將單元格設定六級標題
選中上方單元格
K 選中上方單元格
選中下方單元格
J 選中下方單元格
⇧K 向上多選單元格
⇧↑ 向上多選單元格
⇧J 向下多選單元格
⇧↓ 向下多選單元格
A 在上方插入單元格
B 在下方插入單元格
X 剪下選中單元格
C 複製選中單元格
⇧V 貼上到上方單元格
V 貼上到下方單元格
Z 撤銷刪除
D, D 刪除選中單元格
⇧M 合併選中單元格,若直選中一個則與下一個單元格合併
⌘S 儲存
S 儲存
L 轉換行號
O 轉換輸出
⇧O 轉換滾動輸出
H 顯示快捷鍵幫助
I, I 中斷Notebook核心
O, O 重啟Notebook核心
esc 關閉頁面
Q 關閉頁面
⇧L 轉換所有單元格行號且設定持續有效
⇧␣ 向上滾動
向下滾動

② 編輯模式

Mac快捷鍵 Windows快捷鍵 用途
程式碼補全或縮排
⇧⇥ ⇧⇥ 提示
⌘] ⌃] 向後縮排
⌘[ ⌃[ 向前縮排
⌘A ⌃A 全選
⌘Z ⌃Z 撤銷
⌘/   註釋
⌘D   刪除該行內容
⌘U   撤銷
⌘↑ ⌃↑ 游標跳轉至單元格起始位置
⌘↓ ⌃↓ 游標跳轉至單元格最終位置
⌥← ⌃← 游標位置左移一個單詞
⌥→ ⌃→ 游標位置右移一個單詞
⌥⌫ ⌃⌫ 刪除前邊一個單詞
⌥⌦ ⌃⌦ 刪除後邊一個單詞
⌘⇧Z ⌃Y 重做
⌘⇧U ⌃⇧Z 重做
⌘⌫ ⌃⌫ 刪除該行游標左邊內容
⌘⌦ ⌃⌦ 刪除該行游標右邊內容
⌃M ⌃M 進入命令模式
esc esc 進入命令模式
⌘⇧F   開啟命令選項板
⌘⇧P   開啟命令選項板
⇧↩ ⇧↩ 運行當前單元格並選中下一個單元格
⌃↩ ⌃↩ 執行選中單元格
⌥↩ ⌥↩ 運行當前單元格並且在下方插入單元格
⌃⇧- ⌃⇧- 以游標所在位置分割單元格
⌘S ⌃S 儲存
下移游標
上移游標

4. 檢視和編輯快捷鍵

① 檢視快捷鍵

① 進入Jupyter Notebook主介面“File”中。

② 在“New”的下拉列表中選擇環境建立一個筆記本。

③ 點選“Help”。

④ 點選“Keyboard Shortcuts”。

② 編輯快捷鍵

⑴ 方法一

① 進入Jupyter Notebook主介面“File”中。

② 在“New”的下拉列表中選擇環境建立一個筆記本。

③ 點選“Help”。

④ 點選“Keyboard Shortcuts”。

⑤ 彈出的對話方塊中“Command Mode (press Esc to enable)”旁點選“Edit Shortcuts”按鈕。

⑵ 方法二

① 進入Jupyter Notebook主介面“File”中。

② 在“New”的下拉列表中選擇環境建立一個筆記本。

③ 點選“Help”。

④ 點選“Edit Keyboard Shortcuts”。

③ 例

檢視和編輯快捷鍵

八、關閉和退出

<a id=quit></a>

1. 關閉筆記本和終端

當我們在Jupyter Notebook中建立了終端或筆記本時,將會彈出新的視窗來執行終端或筆記本。當我們使用完畢想要退出終端或筆記本時,僅僅關閉頁面是無法結束程式執行的,因此我們需要通過以下步驟將其完全關閉。

① 方法一

⑴ 進入“Files”頁面。

⑵ 勾選想要關閉的“ipynb”筆記本。正在執行的筆記本其圖示為綠色,且後邊標有“Running”的字樣;已經關閉的筆記本其圖示為灰色。

⑶ 點選上方的黃色的“Shutdown”按鈕。

⑷ 成功關閉筆記本。

  • 注意:此方法只能關閉筆記本,無法關閉終端。

② 方法二

⑴ 進入“Running”頁面。

⑵ 第一欄是“Terminals”,即所有正在執行的終端均會在此顯示;第二欄是“Notebooks”,即所有正在執行的“ipynb”筆記本均會在此顯示。

⑶ 點選想要關閉的終端或筆記本後黃色“Shutdown”按鈕。

⑷ 成功關閉終端或筆記本。

  • 注意:此方法可以關閉任何正在執行的終端和筆記本。

③ 注意

⑴ 只有“ipynb”筆記本和終端需要通過上述方法才能使其結束執行。

⑵ “txt”文件,即“New”下拉列表中的“Text File”,以及“Folder”只要關閉程式執行的頁面即結束執行,無需通過上述步驟關閉。

④ 演示

關閉筆記本和終端

2. 退出Jupyter Notebook程式

如果你想退出Jupyter Notebook程式,僅僅通過關閉網頁是無法退出的,因為當你開啟Jupyter Notebook時,其實是啟動了它的伺服器。

你可以嘗試關閉頁面,並開啟新的瀏覽器頁面,把之前的地址輸進位址列,然後跳轉頁面,你會發現再次進入了剛才“關閉”的Jupyter Notebook頁面。

如果你忘記了剛才關閉的頁面地址,可以在啟動Jupyter Notebook的終端中找到地址,複製並貼上至新的瀏覽器頁面的位址列,會發現同樣能夠進入剛才關閉的頁面。

因此,想要徹底退出Jupyter Notebook,需要關閉它的伺服器。只需要在它啟動的終端上按:

  • Mac使用者:control c
  • Windows使用者:ctrl c

然後在終端上會提示:“Shutdown this notebook server (y/[n])?”輸入y即可關閉伺服器,這才是徹底退出了Jupyter Notebook程式。此時,如果你想要通過輸入剛才關閉網頁的網址進行訪問Jupyter Notebook便會看到報錯頁面。

九、參考資料

1.知乎:jupyter notebook 可以做哪些事情?猴子的回答

  1. Jupyter Notebook官方介紹

  2. Anaconda官方下載頁面

  3. Python·Jupyter Notebook各種使用方法記錄

  4. Stack Overflow中有關如何隱藏/顯示輸入單元格的問題

  5. 魔術命令官方文件

  6. Jupyter Notebook 的快捷鍵

  7. Jupyter Notebook官方文件