最近闲暇练手的时候在用Python写一些小的玩具程序,因为经常更换设备,如何同步环境、代码乃至运行状态就成了一个头疼的问题。

在搜索引擎换用了各种关键字搜索之后,终于找到一个解决方案,Jupyter Notebook

简介

使用效果及介绍可以参考 这篇文章 或者 官方网站

最近闲暇练手的时候在用Python写一些小的玩具程序,因为经常更换设备,如何同步环境、代码乃至运行状态就成了一个头疼的问题。

在搜索引擎换用了各种关键字搜索之后,终于找到一个解决方案,Jupyter Notebook,安装起来也很简单,只需要简单的几句命令:

pip3 install jupyter
jupyter notebook

就能将Jupyter Notebook运行起来,如果是在有图形环境的本地电脑运行,应该会直接打开浏览器或者弹出url。

搭建

但是由于我打算把Jupyter Notebook部署到互联网的一台VPS上以便于不同设备在不同网络环境下使用,因此需要进行一些安全方面的设置。

首先创建一个非特权的notebook用户并切换到该用户来运行Notebook。

adduser notebook

接下来需要对Notebook进行一定的配置。

首先通过命令

jupyter notebook --generate-config

创建一个配置文件,Linux下默认的位置在~/.jupyter/jupyter_notebook_config.py,然后编辑其中的IP地址,端口,密码等设置项。

博主修改的项目如下:

c.NotebookApp.allow_remote_access = True
c.NotebookApp.notebook_dir = '~/notebook_dir'
# 密码可以通过 python 中执行 from notebook.auth import passwd; passwd() 生成
c.NotebookApp.password = 'sha1:e5xxxxxxxxc3:94bxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx7'
c.NotebookApp.port = 8888
c.NotebookApp.ip = '0.0.0.0'
c.NotebookApp.allow_root = True  # 仅root用户需要

最后,通过supervisor运行并监控Notebook程序,配置文件如下:

[program:notebook]
environment=LANG="en_US",LC_CTYPE="en_US.UTF-8"
command=/usr/local/bin/jupyter notebook
autostart=true
autorestart=true
user=notebook

其他

添加virtualenv支持

virtualenv是python下常用的虚拟环境管理工具,为Notebook添加virtualenv支持也很简单,只需要添加对应kernel即可。

比如添加一个名为foobar的虚拟环境:

virtualenv foobar
source foobar/bin/activate
pip3 install ipykernel
python -m ipykernel install --name foobar

在Notebook中执行bash命令或pip安装

目前没有想到什么好的方法,只能手动在Notebook中运行

!{sys.executable} -m pip install requests

本文由 sandtears 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

楼主残忍的关闭了评论