连接服务器的jupyter notebook

连接服务器可视化编程

方案1:服务器的jupter notebook 配置

1. 在命令行生产配置文件:

$ jupyter notebook --generate-config

2.设置密码:

 

方法 A(5.0vision)推荐

$ jupyter notebook password
Enter password:  ****
Verify password: ****
[NotebookPasswordApp] Wrote hashed password to /Users/you/.jupyter/jupyter_notebook_config.json

方法 B

在ipython或者python 运行环境中调用设置密码>>from notebook.auth import passwd

In [2]: passwd()
Enter password:  xxxxxx
Verify password: xxxxxx
Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'  # 这一密钥要复制到下面的配置文件中



3.修改配置文件


用任意编辑器打开刚刚生产的文件,一般linux在user文件夹下/.jupyter, win 默认安装在c:\user\user.jupyter 下:

找到下面几个部分进行修改 :

 


c.NotebookApp.password = u'sha:***'   #引号前记得写u,复制刚刚得到的密文于此
c.NotebookApp.open_browser = False # 默认不在本地浏览器中打开

c.NotebookApp.ip = '*'  # *代表监听所有端口,外网可以访问
c.NotebookApp.allow_remote_access=True #允许外部访问

c.NotebookApp.port =9900    # 设置一个本机端口来访问,建议不要设为8888
c.NotebookApp.notebook_dir ='jupyter'      #保存jupyter notebook的路径,可以自己设置,建议绝对路径。若是服务器的用户登录,会自动在前面加上用户目录。若路径报错,可注释掉


4.保存,在服务器上运行jupyter notebook

 

复制输出的 http://服务器ip:9900/ 在本地浏览器上打开,输入设置的密码即可。

 

(可选)使用https

 

3 生成SSL证书
因为Jupyter必须要用https进行登录,所以需要生成ssl证书。

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem



上面的命令需要填写一些个人信息,可以自动生成证书,但是这个证书是不安全的,只能在测试过程中使用。

 

在jupyter_notebook_config.py文件中加入:(路径改为文件的绝对路径)

c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key’

 

就可以使用https了。这个证书是不安全的,只能在测试过程中使用

 

 


5 端口转发


为了使得外网能够访问位于内网的Jupyter,还需要进行端口转发:

进入路由器找到虚拟服务器
设置一个外部端口号码例如39887—对应内部Juypter端口如8888,在填入安装Jupyter计算机在局域网的对应IP如192.168.2.123。
例如路由器的公网IP为: 10.10.10.10
则使用10.10.10.10:39887即可访问对应的Jupyter页面
 

问题:

 

  File "/usr/lib/python3.5/socket.py", line 732, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

解决:

这个问题主要是由于远程打开的时候,并没有allow_remote_access=True

输入命令

在 ~/.jupyter/jupyter_notebook_config.py 中加入:
 

c.NotebookApp.allow_remote_access=True


方案2:pycharm 专业版 通过配置ssh连接服务器上的项目目录,可用服务器上的python解释器

 

jupyter notebook 用法

1.更换Jupyter Notebook 内核Python版本
最近在使用Jupyter Notebok的时候遇到了这个问题,记录一下。
参考的博文:
jupyter notebook import error但是命令提示符import正常
jupyter notebook中已安装的包显示“没有安装此模块”

之前遇到的一个问题:在cmd环境下进入Python环境,可以使用Numpy、Scipy等多个包的函数,但是Jupyter Notebook中则无法导入。环境是在Anaconda中安装的,它自带的环境是因该是包含大部分的科学计算包的,但是除此之外,我还传见过新的环境,所以问题就出现在这里,应该是Python环境的版本不一致,所以,可以通过更换Jupyter Notebook内核的Python环境解决这个问题。

首先是如何查看Python解释器所在位置的命令(进入python环境后):

import sys
sys.executable

两处指向的位置确实不同:


接下来我们要找到Jupyter Notebook内核指定的Python环境位置,然后改成cmd下环境指向的位置即可:
在cmd(win+r)下输入命令:

ipython kernelspec list

输出的结果会是一个位置:


接下来在文件资源管理器中打开这个文件夹,文件夹里会有几个文件,接下来使用文本编辑器打开kernel.json文件:
里面的内容如下:

{
 "argv": [
  "D:\\Anaconda\\envs\\tensorflow\\python.exe",
  "-m",
  "ipykernel_launcher",
  "-f",
  "{connection_file}"
 ],
 "display_name": "Python 3",
 "language": "python"
}

可以看到里面指定了Python解释器的位置,修改成cmd下的路径保存,重启Jupyter Notebook即可。

打开Jupyter Notebook后,如果出现 No Kernel的情况,可能是你的Python环境还没有安装 ipykernel,如果使用的是anaconda,进入对应的环境之后,执行这个命令安装:

pip3 install ipykernel

即可

2.查看函数的具体信息
使用 ? 查看函数具体信息,例如:

import numpy as np

np.random.randint?   # 注意一定不要带括号

或者光标指定到函数上 shift + tab 键。

3.使用JupyterLab
这是最近发现的一个东西,感觉JupyterLab要好用一些。
打开方式很简单,我们一般打开 Jupyter Notebook的文件的时候,地址一般是这样的:

http://localhost:8888/notebooks/temp.ipynb
1
只要添加一个lab就可以了:

http://localhost:8888/lab/notebooks/temp.ipynb
1
这样会转到一个新页面,页面就是Jupyter Lab的页面了。
也可以直接在 Anaconda 的 cmd 下,直接使用命令:

jupyter lab
1
4.记录几个常用的快捷键
记录几个我觉得最常用的功能快捷键:
首先这几个快捷键都是在命令模式下的,所以要先按 ESC 键进入命令模式(这种模式的标志就是鼠标的光标没有了),在这种模式下:

A 在当前 cell 上方插入新的 cell
B 在当前cell 下方插入新的 cell
D D (没错,连续按两次D)删除当前单元格
M 进入 Markdown 模式(所以有的时候你会发现自己的代码突然按shift+enter没法运行了?看一看cell前面有没有 [ ],没有的表示进入额Markdown模式了)
Y 进入 代码模式
————————————————
版权声明:本文为CSDN博主「MirrorN」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_34328764/article/details/83214172

 

 

ref:https://blog.csdn.net/dongfangxiaozi_/article/details/88816644

https://blog.csdn.net/u014636245/article/details/70922960

https://blog.csdn.net/computerme/article/details/78751670
https://blog.csdn.net/computerme/article/details/78751670

你可能感兴趣的:(linux)