[python] 多python版本服務器端jupyter-notebook映射到本地


因爲實習的地方有些數據在服務器上,代碼也要放到服務器上跑,
但是把數據拷到本地-本地寫代碼-代碼放上服務器-在服務器調試太麻煩了,所以想把jupyter映射到本地。
本以爲很簡單,沒想到因爲服務器上python版本管理得不太好,加上對linux不熟悉,所以踩了大半天坑,記一下防止再踩。

注:#後是服務器上的代碼,$後是本地終端的代碼。

0.基本信息

  • 服務器版本
# cat /proc/version

Linux version 3.10.0-327.el7.x86_64 (mockbuild@x86-ol7-builder-01)
(gcc version 4.8.5 20150623 (Red Hat 4.8.5-4) (GCC) )

  • 服務器python版本
    2.7,3.3,3.6,3.7都有…
    平常使用的是3.7,對應的pip是pip3

  • 本地版本

$ sw_vers

ProductName: Mac OS X
ProductVersion: 10.13.5
BuildVersion: 17F77

1. 安裝、試用Jupyter

  • 安裝
# pip3 install jupyter
  • 試用
# jupyter-notebook

然而報錯了,未找到命令... (如果沒報錯就直接看第二步)

嘗試1 - 失敗

  • 再安裝
    考慮到服務器上的python版本比較多,所以百度了一通,找到這個,重新裝了jupyter。
# python3 -m pip install jupyter
  • 再試用
# jupyter-notebook

還是報錯,但是爲什麼對應的是python3.6?在這裏插入圖片描述

嘗試2 - 失敗

又百度了一通,發現這個,跟着查了python的路徑,是/usr/bin/python
再查一下jupyter notebook的kernel環境,並順着網線爬過去:

# jupyter kernelspec list

在這裏插入圖片描述

# cd /root/.local/share/jupyter/kernels/python3
# vi kernel.json 

在這裏插入圖片描述
python地址並沒有錯……

嘗試3 - 成功

又又百度了一通,沒有找到解決方案,只好回去看報錯,發現罪惡的源頭在/usr/local/bin/jupyter-notebook,繼續順着網線爬過去。

# cd /usr/local/bin/
# vi jupyter-notebook

在這裏插入圖片描述
所以notebook的定位是/usr/local/bin/python3,爬過去!

# cd /usr/bin/
# ls -l | grep python3

python3 -> /usr/local/python/bin/python

原來jupyter notebook鏈接的是/usr/local/python/bin/python,而我需要用的python3.7在/usr/local/python37/bin/python3.7,所以有兩個解決方案:

  1. 改jupyter-notebook的代碼
    把第一行的聲明改成#!/usr/local/bin/python3
    (但是不知道爲什麼失敗了)
  2. 改python3的鏈接 參考
# rm -rf /usr/local/bin/python3
# ln -s /usr/local/python37/bin/python3.7 /usr/local/bin/python3

再試着啓動jupyter-notebook,成功。

2. 映射到本地

綜合參考一參考二,試了一下,最終選擇了這個方案:

$ ssh root@*ip -L 127.0.0.1:1234:127.0.0.1:8888 
# jupyter notebook --no-browser --port=8888 --allow-root

*ip爲服務器的地址,1234是想要映射到本地的地址(可改),8888是想要映射到服務器上的地址(可改,但要與打開時指定的port對應)。
在這裏插入圖片描述
然後複製url,把localhost:後面的四位數改成1234,打開本地的瀏覽器粘貼進地址欄,就可以了。

最後,祭上混亂的python……
在這裏插入圖片描述

3. update-多核jupyter

  • python 2, 參考,達成!
# python2 -m pip install ipykernel
# python2 -m ipykernel install --user
  • python 3.5/python3.7共存
    思路: 現在對應的是3.7,複製3.7的kernel文件, 改裏面的細節。
# jupyter kernelspec list  #查看kernel文件的位置
# cd /root/.local/share/jupyter/kernels/ #進入
# ll #查看該文件夾下的子文件夾
# cd ./python3 #進入python3文件夾裏
# ll #查看該文件夾下有啥

在這裏插入圖片描述
可以發現每個kernel就是一個文件夾,文件夾裏對應一個json文件,所以如法炮製,在/root/.local/share/jupyter/kernels/下新建文件夾(python3.5),在新建的文件夾裏複製3的kernel.json,再修改裏面的細節。

# mkdir /root/.local/share/jupyter/kernels/python3.5
# cp -p /root/.local/share/jupyter/kernels/python3/kernel.json /root/.local/share/jupyter/kernels/python3.5
# cd /root/.local/share/jupyter/kernels/python3.5
# vi kernel.json

修改框出來的兩個地方就好啦!
在這裏插入圖片描述
done!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章