Jupyter Notebook 進(jìn)階設(shè)置

很多使用jupyter的同學(xué)會(huì)遇到這樣一個(gè)問題,在anaconda中創(chuàng)建了多個(gè)環(huán)境,啟動(dòng)jupyter notebook后,在new的下拉菜單中卻找不到。本文就解決這樣的問題。

添加多個(gè)環(huán)境

我anaconda默認(rèn)的是python3,但還有一個(gè)python2的自定義的環(huán)境,命名為myPython2。

打開jupyter notebook發(fā)現(xiàn)只有python3可用,而我想使用myPython2這個(gè)環(huán)境卻找不到。

  1. 首先,在anaconda中切換到myPython2環(huán)境下,確認(rèn)是否安裝了ipykernel這個(gè)包,如果沒有則安裝。

  2. 然后,在這個(gè)環(huán)境下輸入一下命令

# xxx是在jupyter中顯示的名字,建議使用環(huán)境的名字,但是不一樣也沒關(guān)系
# 我這里和環(huán)境名字一樣,使用myPython2這個(gè)名字

python -m ipykernel install --name XXXX

  1. 然后啟動(dòng)jupyter,會(huì)發(fā)現(xiàn)現(xiàn)在有了myPython2這個(gè)選項(xiàng)了!

增加后的樣子如圖所示:

20171128150325511.png

在第二步中,linux環(huán)境下可能會(huì)遇到權(quán)限不足的問題,需要sudo權(quán)限。但是使用了sudo權(quán)限后,默認(rèn)的python就不是環(huán)境中的python了,可以使用which python來查看。兩個(gè)方法:

查找python的具體位置

# 這里我們手動(dòng)告知python的路徑
/home/test/anaconda2/envs/myPython2/bin/python -m ipykernel install --name myPython2

生成配置

類似于其他可以自定義配置的軟件一樣,Jupyter Notebook也有自己的配置文件,但是默認(rèn)是不存在的,需要我們自己手動(dòng)生成。我們可以使用以下命令生成配置文件。

# linux和mac系統(tǒng)打開終端
# windows系統(tǒng)打開anaconda自帶的終端
jupyter notebook --generate-config

根據(jù)系統(tǒng)不同生成的文件所在位置也不同,mac和linux系統(tǒng)都在~/.jupyter目錄下,windows也在當(dāng)前用戶目錄下的.jupyter目錄。名稱為jupyter_notebook_config.py,幾乎所有的配置都是在這一個(gè)文件中完成。

個(gè)性化配置(遠(yuǎn)程登錄)

有了配置文件,我們就可以就可以進(jìn)行個(gè)性化配置。使用編輯器打開配置文件,如果想要改變默認(rèn)目錄,在文件中搜索c.NotebookApp.notebook_dir,在后邊填寫你期望的默認(rèn)目錄。如果你想改變端口,搜索NotebookApp.port更改即可。注意,默認(rèn)這些配置都是被注釋掉的,你在更改后必須去掉這行前邊的#符號(hào)。

有時(shí)候我們想讓Jupyter Notebook運(yùn)行在服務(wù)器上,但是我們又想在本機(jī)通過瀏覽器操作,如何實(shí)現(xiàn)呢?

首先,我們?yōu)檫h(yuǎn)程的Jupyter Notebook創(chuàng)建密碼,打開IDE或者命令行,輸入如下命令:

from notebook.auth import passwd
passwd()
# 此時(shí)需要輸入兩次密碼(一次設(shè)置,一次確認(rèn)),然后生成sha1的密文,拷貝下來。
# Enter password: ········
# Verify password: ········
# sha1:b11ba7ae862e:6eeb922ef6b770e43a1c90922ba341faaaaaaaa

如果提示notebook模塊不存在,那么使用conda install noteobok來安裝。

輸入passwd()后需要兩次鍵入密碼,之后會(huì)產(chǎn)生一段密文,復(fù)制這段密文(包含sha1:),找到下列行,修改配置文件如下:

c.NotebookApp.ip='*' # 允許所有ip訪問
c.NotebookApp.password = u'sha1:...剛才復(fù)制的那個(gè)密文'
c.NotebookApp.open_browser = False # 是否打開瀏覽器
c.NotebookApp.port = 8888 #指定端口

之后,在服務(wù)器上使用jupyter notebook啟動(dòng),然后本機(jī)通過http://address_of_remote:8888遠(yuǎn)程訪問即可,登錄界面需要輸入設(shè)置的密碼。

權(quán)限控制,實(shí)現(xiàn)多個(gè)用戶工作空間不同,同時(shí)使用

使用

 jupyter notebook --generate-config 

命令生成配置文件。

打開python 命令行,輸入下面兩條命令并輸入密碼三次,生成sha1秘鑰

from notebook.auth import passwd

passwd()

然后編輯配置文件

vim ~/.jupyter/jupyter_notebook_config.py

添加:

    c.NotebookApp.ip='*'                                  # * 代表所有iP都能訪問 ,也可以指定ip
    c.NotebookApp.password = u'sha1:ce...'       # 剛才復(fù)制的那個(gè)密文
    c.NotebookApp.open_browser = False       # 禁止自動(dòng)打開瀏覽器
    c.NotebookApp.port =8888                         #指定一個(gè)端口
     
    c.NotebookApp.notebook_dir = '/home/user/user1'  #指定工作空間
    c.PAMAuthenticator.encoding = 'utf8'         #指定utf-8編碼,解決讀取中文路徑或者文件亂碼問題

一開始設(shè)置完的時(shí)候發(fā)現(xiàn)jupyter會(huì)因?yàn)閬y碼讀取中文路徑或者文件失敗,后來發(fā)現(xiàn)

c.PAMAuthenticator.encoding = 'utf8' 可以指定讀取文件名的編碼方式,完美解決。

然后使用 jupyter notebook 命令開啟服務(wù),就能在window 本地使用 ip:端口 的的地址登錄jupyter了 。

root 用戶需使用以下命令

jupyter notebook --allow-root

第一次需要輸入密碼就是剛才設(shè)置的密碼。

上面的操作做完,可以多個(gè)用戶使用了 但是工作空間只有一個(gè),且只能一個(gè)人去開啟服務(wù),不能關(guān)閉,這點(diǎn)有點(diǎn)但疼痛。

實(shí)現(xiàn)多用戶

首先添加linux 用戶

useradd user2

passwd user2

然后登錄user2

重復(fù)上面的操作,生成配置文件,并修改配置文件

注意端口號(hào)和工作空間不能跟上面一樣就好了。

然后運(yùn)行命令

jupyter notebook

發(fā)現(xiàn)報(bào)錯(cuò),忘了截圖了,大概意思是/run/user/0/ 的權(quán)限問題

切換root 用戶或者sudo 命令

    chmod 777  /run/user/0/jupyter
    chmod 777 -R /run/user/0/jupyter
    chmod 777 -R /run/user/0/

一開始沒有成功,后來多輸了幾條命令運(yùn)行成功,命令不太熟悉,這里都放上供參考。

成功運(yùn)行 !然后打開瀏覽器輸入地址就可以了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容