美文网首页jupyter好玩的 Python
我知道你们会用 Jupyter notebook 但你会配置 J

我知道你们会用 Jupyter notebook 但你会配置 J

作者: 爱吃鱼de大猫 | 来源:发表于2018-12-28 08:59 被阅读61次

    任何学习 Python 的同学都知道 Jupyter notebook (以前叫 Ipython notebook)这个强大的工具。当我们需要进行一些实验性的演示编码时,它提供了超级便利。第一次用过后我便喜欢上它,成为手头不可或缺的工具库成员。通常我们会这样来使用它:

    1. 在各台机器上启动 jupyter-notebook,登陆不同设备再重复这个过程
    2. 在远程服务器上安装设置 jupyter 然后启动 jupyter-notebook(通常在命令行或者 tmux 会话里),下次登陆再重复这个过程
    3. 或者在 Docker 镜像里重复上一步
    4. 使用 Azure Notebooks
    5. 将它设置成服务器后台服务,需要你对系统有管理员权限

    我习惯将 notebooks 集中放置,这样便于管理,同时可以方便地在各个设备上使用,本文将讨论在 Windows 10 环境下使用 Hyper-V 虚拟机按第5个方式安装配置 Jupyter 服务, Hyper-V 提供了虚拟机自动后台启动,很方便我们在 Linux 服务器环境下的实验和学习。下面将按照相关步骤完成 Jupyter 服务的安装和配置。

    系统环境:

    • Centos7 系统并有 sudoer 权限
    • Python3 最新版(3.7.2)

    开启 Hyper-V 并创建 Centos7 虚拟机

    步骤:

    • 开启 Hyper-V
    • 安装 Centos7 虚拟机
    • 配置好虚拟机的静态 IP 地址

    怎样开启 Hyper-V 和安装 Centos7 虚拟机,同时配置好虚拟机的静态 IP 地址。这里就不再详述,网上教程一大把,大家可以自行谷歌。

    使用 Pyenv 管理多版本 Python

    Centos7 自带的 Python3 版本比较旧,学习和实验自然选最新的版本了,pyenv 这个工具满足了我们这个需求。

    首先安装 Python 的依赖包,Pyenv 编译 Python 时需要用到:

    sudo yum -y groupinstall "Development tools"
    
    sudo yum -y install  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel  gdbm-devel  xz-devel libffi-devel uuid-devel libuuid-devel tcl-devel
    

    安装和配置 Pyenv

    git clone https://github.com/pyenv/pyenv.git ~/.pyenv
    
    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
    

    如果使用 zsh 改成以下命令:

    echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshenv
    echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshenv
    echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshenv
    

    最后执行:

    exec "$SHELL"
    
    ➜  ~ pyenv help
    Usage: pyenv <command> [<args>]
    
    Some useful pyenv commands are:
       commands    List all available pyenv commands
       local       Set or show the local application-specific Python version
       global      Set or show the global Python version
       shell       Set or show the shell-specific Python version
       install     Install a Python version using python-build
       uninstall   Uninstall a specific Python version
       rehash      Rehash pyenv shims (run this after installing executables)
       version     Show the current Python version and its origin
       versions    List all Python versions available to pyenv
       which       Display the full path to an executable
       whence      List all Python versions that contain the given executable
    
    See `pyenv help <command>' for information on a specific command.
    For full documentation, see: https://github.com/pyenv/pyenv#readme
    
    

    这样我们的 Pyenv 环境就安装好了。下面就是安装最新版的 Python3:

    ➜  ~ pyenv install -v 3.7.2
    
    ➜  ~ pyenv rehash
    
    ➜  ~ pyenv versions
    * system
      3.7.2 (set by /home/musan/.pyenv/version)
    
    ➜  ~ pyenv global 3.7.2
    
    ➜  ~ pyenv versions
      system
    * 3.7.2 (set by /home/musan/.pyenv/version)
    
    ➜  ~ python -V
    Python 3.7.2
    ➜  ~ pip -V
    pip 18.1 from /home/musan/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pip (python 3.7)
    ➜  ~
    

    现在我们的 Python 3.7.2 环境安装好了,剩下的就是 pip 安装需要的包:notebook。不熟悉 pyenv 的同学请自行补课。

    配置 jupyter-notebook 服务器

    创建工作目录

    mkdir notebooks
    

    创建的 /home/musan/notebooks 这个目录用来放置所有的 notebooks 文档。
    下面创建登陆密码:

     ~ python
    Python 3.7.2 (default, Dec 26 2018, 15:30:15)
    [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from notebook.auth import passwd
    >>> passwd()
    Enter password:
    Verify password:
    'sha1:8ba6ed3ed711:8b9253b89af83513c9fe61bae8fbf2f3cd027a30'
    >>>
    

    下面准备好 jupyter 启动的配置文件

    jupyter notebook --generate-config
    

    这个命令会在我们的工作目录创建一个 ~/.jupyter/jupyter_notebook_config.py 配置文件,我们根据需要修改以下配置项:

    c.NotebookApp.port = 8888
    c.NotebookApp.ip = '0.0.0.0'  # 这里使用默认的 8888
    c.NotebookApp.password = 'sha1:8ba6ed3ed711:8b9253b89af83513c9fe61bae8fbf2f3cd027a30'  # 这个就是我们上面生成的密码
    c.NotebookApp.notebook_dir = '/home/musan/notebooks'
    

    将 jupyter-notebook 加入服务列表

    准备好 Python 环境后,接着安装好相应的 jupyter 包,我们就可以开始愉快的玩耍了。但是我是一个很懒的人,我想要 jupyter notebook 自动跟随系统启动运行。

    sudo vi /usr/lib/systemd/system/jupyter.service
    

    接下来准备

    [Unit]
    Description=Juyper-NoteBook
    
    [Service]
    Tpye=simple
    PIDFile=/var/run/jupyter.pid
    ExecStart=/home/musan/.pyenv/shims/jupyter-notebook --no-browser
    WorkingDirectory=/home/musan/notebooks
    User=musan
    Group=musan
    
    [Install]
    WantedBy=multi-user.target%
    

    配置 centos 防火墙端口,让我们可以远程访问服务器

    sudo chmod 644 /usr/lib/systemd/system/jupyter.service
    
    sudo firewall-cmd --zone=public --add-port=8888/tcp --permanent  # 端口根据你上面的配置文件里的端口号,这里使用默认的 8888
    sudo firewall-cmd --reload
    

    将 jupyter-notebook 加入系统服务列表并启动后台服务

    sudo systemctl daemon-reload
    sudo systemctl enable jupyter
    sudo systemctl start jupyter
    
    jupyter.png

    总结

    到此,Jupyter 服务已经配置好了,它将跟随系统一起后台启动,所有的 notebook 文档都规整在统一的文件夹里,强迫症减轻了不少 :)。本文主要介绍了 centos7 下使用最新版的 Python 方法,如何配置自定义服务的几个步骤和要点,介绍了 systemd 系统管理 xxxx.service 配置文件的创建,举一反三,今后再也不用去重复手动启动后台程序了。

    参考

    相关文章

      网友评论

        本文标题:我知道你们会用 Jupyter notebook 但你会配置 J

        本文链接:https://www.haomeiwen.com/subject/reojlqtx.html