zoukankan      html  css  js  c++  java
  • 远程jupyter+pycharm配置 (一)之安装与使用技巧

    前言

    作为一个数据工程师,最喜欢的事情就是不停的在现实的服务端环境调试代码的参数。我们在本地的环境与生产的状况决然不同,我们一开始在本地写代码测试再部署到服务端的三板斧就不适用了。

     

    最好的方式可以直接在linux环境下的服务端直接写代码,分步调试。之前我在银行都是使用集成在CDSW的环境IDE,但是如今我们需要自己拼凑一个可用类似的工具。

    这样我们就要用到远程jupyter,即服务端提供jupyter server,而我们只需要直接在本地环境直接使用server暴露的web接口上直接写代码,分步调试运行测试即可。

    作为一个仅仅做数据的开发人员,我更喜欢使用pycharm的源码查看,跳转等功能。所以最终我们需要的是一个远程jupyter+pycharm配置的IDE工具。本篇文章就是搭建一个如此好用的神兵利器的博客说明书。

    什么是Jupyter notebook?

    Jupyter notebook 是一种 Web 应用,基于网页的用于交互计算的应用程序,可用于全过程计算:开发、文档编写、运行代码和展示结果。

    以前又称为IPython notebook,是一个交互式笔记本, 支持运行40+种编程语言. 可以用来编写漂亮的交互式文档

    Jupyter notebook特别适合做数据处理,其用途可以包括数据清理和探索、可视化、机器学习和大数据分析,源于 Fernando Perez 发起的 IPython 项目。

    IPython 是一种交互式 shell,与普通的 Python shell 相似,但具有一些更高级的功能,例如语法高亮显示和代码补全,还有一些 magic 操作,十分方便。Jupyter notebook 将 IPython 做成了一种 Web 应用,它的基本架构如下:

    这里的核心是 notebook server,用户通过浏览器连接到该服务器,而 notebook 呈现为 Web 应用。

    用户在 Web 应用中编写的代码通过该服务器发送给内核,内核运行代码,并将结果发送回该服务器。然后,任何输出都会返回到浏览器中。保存 notebook 时,它将作为 JSON 文件(文件扩展名为 .ipynb)写入到该服务器中。

    此架构的一个优点是,内核无需运行 Python。由于 notebook 和内核分开,因此可以在两者之间发送任何语言的代码。

    例如,早期的两个非 Python 内核分别是 R 语言和 Julia 语言。使用 R 内核时,用 R 编写的代码将发送给执行该代码的 R 内核,这与在 Python 内核上运行 Python 代码完全一样。

    IPython notebook 已被改名,因为 notebook 变得与编程语言无关。新的名称 Jupyter 由JuliaPython 和 R 组合而成。

      servers:jupyterhub 需要登录的多用户笔记本
           tmpnb 不需要登录的临时笔记本
           nbgrader 作为任务创建和分级的笔记本
           nbviewer 网站笔记本的HTML视图

      Applications: nbconvert 将笔记本文件转换为其他格式
            notebook Jupyter notebook 应用相当于Django的app
            qtconcle 控制应用
            jupyter_consle Jupyter 终端应用

      API:nbformat ipython 文件下载,保存,格式版本迁移和信托
        jupyter_client
        jupyter_core jupyter命令,配置文件和文件系统位置

      Kernerl : ipywidgets 交互组件
           ipython python代码执行,魔法语法和ipython终端交互
           ipykernel 内核通讯协议
           traitlets 所有依赖:配置系统和小部件基础层

    1.安装指南:

    1.安装jupyter 

    我们已经安装anaconda环境,conda activate user后 直接执行如下命令

    conda install jupyter

    安装成功后按如下步骤:

    1. 前置条件:一个配置文件

    第一步就生成配置文件 jupyter_notebook_config.py

    jupyter notebook --generate-config

    如果是root 用户执行时需要加上 --allow-root 选项

    jupyter notebook --generate-config --allow-config

    2. 生成密码

    bash生成

    jupyter notebook password
    Enter password:  xxxx
    Verify password: xxxx
    [NotebookPasswordApp] Wrote hashed password to /home/rdev/jupyter/jupyter_notebook_config.json

    也可以python环境下生成

    >from notebook.auth import passwd
    >passwd()
    Enter password:xxxxx
    Verify password:xxxxx
    res: 'sha1:xxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

    passwd() 方法在没有传入参数时候,会如上所示提示输入和验证密码,它也可以传入一个字符串作为密码,即 passwd('12345') ,但不建议这种做法,因为本来输入命令都会被保存起来,直接输入密码,相当于密码以明文方式保存在输入历史。

    3.添加到配置文件

    将哈希密码添加到配置文件 jupyter_notebook_config.py

    # ip 设置为 *
    c.NotebookApp.ip = '*'
    # 密码 设置为 sha1 
    c.NotebookApp.password = u'sha1:xxxxx:xxxxxxxxxxx<your hashed password here>'
    # 浏览器设置不打开
    c.NotebookApp.open_browser = False
    # 设置一个固定的接口
    c.NotebookApp.port = 8888

    1.官方教程是建议 c.NotebookApp.ip 设置为 * ,但实际上这样操作可能会连接失败,所以可以选择设置为 0.0.0.1 或者就是服务器的 IP

    2.服务器端口默认为80,但是80端口基本都会被占用建议设置8888或者8899等等

    4.采用 SSL 加密通信(可选)

    采用密码的同时使用带有网站证书的 SSL ,可以避免哈希的密码被非加密的形式发送给浏览器。

    但是一般运维人员会只暴露服务器端口给公司的网段,所以这一项是可选项。

    可以是先使用openssl命令生成ssl证书和key

     openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout sslkey.key -out sslcert.pem

    再修改配置文件:

    # 证书的信息
    c.NotebookApp.certfile = u'/home/rdev/sslcert.pem'
    c.NotebookApp.keyfile = u'/home/rdev/sslkey.key'

    4.启动jupyter

    启动的时候就可以不带后面的参数

    1.带参数

    jupyter notebook 

    2.不带参数

    jupyter notebook --certfile=sslcert.pem --keyfile sslkey.key

     

     2.pycharm集合jupyter

    建立项目后,创建ipynb文件,选择相应的服务器地址,端口为8888 token就是登入密码

     

    3.jupyter Notebook 扩展工具

    如果没有安装插件管理器,打开jupyter notebook后菜单栏只有如下3项,

    • Files
    • Running
    • Clusters

    我们需要安装插件管理器来管理我们需要的插件,

    第一步:用conda安装插件管理包

    conda install -c conda-forge jupyter_contrib_nbextensions
    conda install -c conda-forge jupyter_nbextensions_configurator

     并导航至新的 Nbextensions 选项卡:

    勾选disable configuration for nbextensions without explicit compatibility (they may break your notebook environment, but can be useful to show for nbextension development),否则下方插件是不可选状态。

    5款NB 的插件。

      • Table of Contents
      • Execute Time
      • Nofity
      • Codefolding
      • Hinterland

    1.Table of Contents:使用链接Table of Contents 的方式追踪定位所有单元格

    2.Autopep8:规范化代码

     

    3.variable inspector:显示你在 notebook 中创建的所有变量的名称,以及它们的类型、大小、形状和值。

    4.ExecuteTime:显示单元格的运行时间和耗时

    不过我感觉都不如pycharm香!!!!

    4.快捷键:

    红框里是绿色时,为编辑模式,在命令模式时按 Enter 会进入编辑模式;

    红框里是蓝色时,为命令模式,在编辑模式时按 ESC 会进入命令模式;

    通用模式(编辑模式与命令模式均可)快捷键:

    • 调出控制面板:Ctrl + Shift + P

    • 运行当前单元格,选中下方单元格:Shift + Enter

    • 运行当前单元格:Ctrl + Enter

    • 运行当前单元格,在下方插入新单元格:Alt + Enter

    • 保存 ipynb 文件:Ctrl + S

    编辑模式快捷键

    • 切换为命令模式:ESC

    • 在光标处分割单元格:Ctrl + Shift + 减号

    • 光标挪至行首或行尾:Alt + ←或→

    • 按单词挪动光标:Ctrl + ←或→

    • 缩进:TAB

    • 取消缩进:Shift + TAB

    • 删除光标前的整个单词:Ctrl + Backspace

    • 删除光标后的整个单词:Ctrl + Delete

    • 显示函数提示:Shift + TAB,按一次显示简略信息,按两次显示详细信息,按三次 10 秒内固定显示,按四次,函数信息固定显示在界面下方。

    • 移动到上一个单元格:↑

    • 移动到下一个单元格:↓

    • 复制光标所在整行:Ctrl + C,注:不要选择任何内容

    • 剪切光标所在整行:Ctrl + X,注:不要选择任何内容

    • 其它复制、剪切、黏贴、重做、取消等快捷键与 Windows 标准快捷键一样。

    命令模式快捷键

    • 切换为编辑模式:Enter

    • 选中单元格改为代码格式:Y

    • 选中单元格改为 Markdown 格式:M

    • 选中单元格改为原生格式:R

    • 当前单元格上方插入单元格:A

    • 当前单元格下方插入单元格:B

    • 删除选中单元格:DD,即连续按两次 D 键

    • 恢复删除的单元格:Z

    • 复制选中单元格:C

    • 剪切选中单元格:X

    • 黏贴选中单元格:V

    • 查找与替换内容:F

    • 隐藏 / 显示输出内容:O

    • 隐藏 / 显示代码行号:L

    • 扩展选择当前单元格上方单元格:Shift + ↑

    • 扩展选择当前单元格下方单元格:Shift + ↓

    • 合并多个单元格:Shift + M

    • 重启内核:00,即连续按两次

    5.像数据科学家一样使用notebook

    如何用notebook做一个综合代码,数据,ppt和excel以及pdf的数据报告

    Qgrid

    Qgrid也是一个Jupyter的小部件,不过它主要用于数据帧,装上之后,就可以像操作Excel里的筛选功能一样,方便的处理数据。

    # only required if you have not added conda-forge to your channels yet
    conda config --add channels conda-forge
    conda install qgrid

    使用:

    import qgrid
    excel_grid=qgrid.show_grid(df.head(20),show_toolbar=True)
    excel_grid

    # pip
    pip install ipywidgets
    jupyter nbextension enable --py widgetsnbextension
    # Conda
    conda install -c conda-forge ipywidgets
    #Installing ipywidgets with conda automatically enables the extension
  • 相关阅读:
    第三天 moyax
    mkfs.ext3 option
    write file to stroage trigger kernel warning
    download fomat install rootfs script
    custom usb-seriel udev relus for compatible usb-seriel devices using kermit
    Wifi Troughput Test using iperf
    learning uboot switch to standby system using button
    learning uboot support web http function in qca4531 cpu
    learngin uboot design parameter recovery mechanism
    learning uboot auto switch to stanbdy system in qca4531 cpu
  • 原文地址:https://www.cnblogs.com/wqbin/p/11996766.html
Copyright © 2011-2022 走看看