很多使用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)境卻找不到。
首先,在anaconda中切換到myPython2環(huán)境下,確認(rèn)是否安裝了
ipykernel這個(gè)包,如果沒有則安裝。然后,在這個(gè)環(huán)境下輸入一下命令
# xxx是在jupyter中顯示的名字,建議使用環(huán)境的名字,但是不一樣也沒關(guān)系
# 我這里和環(huán)境名字一樣,使用myPython2這個(gè)名字
python -m ipykernel install --name XXXX
- 然后啟動(dòng)jupyter,會(huì)發(fā)現(xiàn)現(xiàn)在有了myPython2這個(gè)選項(xiàng)了!
增加后的樣子如圖所示:

在第二步中,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)行 !然后打開瀏覽器輸入地址就可以了。