2017-04-18 152 views
1

我正在开发一个Jupyter笔记本电脑我的团队用来分类和分析一些专有数据。我已准备好与团队分享它,以便继续执行和开发。该团队通常拥有Windows 10工作站,并且是熟练的工程师,但不是数据科学家。目前没有人使用Jupyter。如何共享Jupyter安装团队笔记本发展

我现在意识到我可能已经彻底误判Jupyter能够支持这种工作环境的能力。

选项1:单机安装

这是最坏的情况。任何想要运行或修改笔记本的人都需要安装Jupyter。蟒蛇可能是最好的方式,但它是一个大的,丑陋的,可怕的安装。更糟的是,每个用户都必须安装和管理额外的库。任何需要更改内核的笔记本更改都必须手动应用到每个安装。

当然,作为客户端 - 服务器,这不是Jupyter的意图。

选项2:一台服务器,许多客户

最明显的办法是举办一个网络访问计算机上的Jupyter服务器,并让所有用户连接到它与浏览器。这样,只有一个共享安装需要管理,每个用户只需要一个URL即可访问它。

但是,有一个疑难杂症 - 服务器期望笔记本电脑将自己的文件系统上!所以每个用户都将访问相同的笔记本文件。这使版本控制非常成问题 - 没有人可以检查自己的笔记本副本以进行独立的编辑和提交会话。相反,更改将覆盖唯一的副本,并且必须在服务器上完成提交/还原/比较(或通过挂载服务器的文件系统)。

选项3:服务器在码头工人的形象,每一个用户运行一个容器

泊坞窗相救?这样我们可以构建/维护一个服务器映像(甚至是版本控制它),每个用户只需要安装一个Docker引擎来实例化映像(这是一个友好的8GB下载!!)。他们连接到他们自己的容器,这些容器有点脚本诡计,会指向他们自己的笔记本副本。

此选项只花了20小时发现,它从根本上吮吸之前进行调查。使用内核很棘手,需要大量新技能。但更多的展示 - 没有任何显示Qt窗口的工作。 qtconsole是我们无法做到的,但我们笔记本的一部分显示了一个文件打开对话框,最好的方式就是使用Qt Widget。当Docker容器中的服务器期望X Windows环境,并且客户端在Windows浏览器中时,Widget无法显示。

Qt的问题是在过去的很多很多问题,试图让泊坞窗选项运行。从matplotlib到路径映射的所有内容,从os库调用到ipywidgets需要调查,调整,谷歌搜索,切碎,并改变工作。我相信这些戏剧将会持续。

结论

有很多围绕Jupyter version control讨论。 read-only sharing有很多选项。甚至还有一个project用于运行时构建Docker容器以提供对笔记本的可执行访问。但是在团队环境中使用Jupyter的建议并不多。

由于服务器并非与客户机本机运行在同一台机器上,导致无尽的复杂性,我开始相信选项1是唯一可行的方法。在我带着蹩脚的消息去看同事之前,还有其他的建议吗?

+0

如果您可以使用商用托管产品,请查看datascience.ibm.com。我们必须实施很多定制才能使Jupyter笔记本在团队环境中运行良好。我不认为你会找到一个简单的方法来推出你自己的解决方案。 –

+0

在我们的情况下,我们对此并不满意,但很好意识到这一点。很高兴知道这不是我应该期望开箱即用的东西。 –

回答

0

最终在Jupyter Google Group上进行了卓有成效的讨论,并确认即装即用,Jupyter不支持这种工作环境。的确,关键的是,Jupyter希望服务器拥有一个用户。

最有希望的解决方案DIY首先是部署JupyterHub,原因有二:

  1. 它启动新的服务器实例为每个用户,每个防止服务器问题的任何多用户。
  2. 它提示用户标识自己,允许根据用户采取不同的操作。

其次,在服务器安装的每个用户的文件系统(或等效的网络架构),因此它可以指向用户返回到自己的本地文件。

我没有实现这个策略(现在就使用选项1!),但它肯定是有道理的。