Wil*_*man 5 ruby graphics centos7 iruby jupyterhub
我正在尝试在现有的多用户 jupyterhub 安装中设置 Ruby 内核。它在我的所有测试中都有效,除了由 nyaplot (我能找到的唯一在 iruby 中工作的绘图包)创建的绘图不会显示在笔记本中。例如,以下代码(来自 Nyaplot 教程之一)没有给出错误(甚至在 syslog 文件中也没有),但没有绘图:
require 'nyaplot'
plot = Nyaplot::Plot.new
sc = plot.add(:scatter, [0,1,2,3,4], [-1,2,-3,4,-5])
color = Nyaplot::Colors.qual
sc.color(color)
plot.show # show plot on IRuby notebook
Run Code Online (Sandbox Code Playgroud)
以下是我如何设置 iruby 在 jupyterhub 中运行。我提供整个过程,以便 (a) 您可以发现是否缺少任何内容,以及 (b) 这样您就知道,如果您说“将 [this] 添加到 Gemfile”之类的内容,您将必须告诉我在哪里放置 Gemfile,因为 jupyterhub 没有在特定目录外运行 iruby。
操作系统是CentOS 7.3。由于其默认的 ruby 版本太旧,无法运行 iruby,我使用 ruby-install 安装了一个版本的 ruby:
wget -O ruby-install-0.6.1.tar.gz https://github.com/postmodern/ruby-install/archive/v0.6.1.tar.gz
tar -xzvf ruby-install-0.6.1.tar.gz
cd ruby-install-0.6.1
make
make install
ruby-install ruby 2.3.4
Run Code Online (Sandbox Code Playgroud)
(我使用了 ruby 2.3,而不是 2.4,因为事实证明 sciruby-full 至少有一个组件还不能与 2.4 一起使用。)安装后,出现一条消息说 ruby 已安装在 /opt/rubies/ruby 中-2.3.4。
我必须确保我的主目录中没有安装任何内容,因为在多用户系统中,其他用户无权访问我的主目录中的文件。我在下面列出了我最终安装的所有软件包来尝试解决这个问题:
export RUBYDIR=/opt/rubies/ruby-2.3.4
export PATH=${RUBYDIR}/bin:$PATH
export LD_LIBRARY_PATH=${RUBYDIR}/lib:$LD_LIBRARY_PATH
export GEM_HOME=${RUBYDIR}
export GEM_PATH=${RUBYDIR}
gem install --no-user-install cztop rbczmq iruby
gem install --no-user-install pry pry-doc awesome_print gnuplot rubyvis nyaplot
gem install --no-user-install sciruby-full
gem install --no-user-install zeromq ffi-rzmq gnuplotrb
Run Code Online (Sandbox Code Playgroud)
查看“ iruby register --force”的结果后,
我创建了该文件/usr/local/share/jupyter/kernels/ruby:
{"argv":[
"/usr/local/bin/jupyter-ruby-env.sh",
"{connection_file}"
],
"display_name":"Ruby",
"language":"ruby"
}
Run Code Online (Sandbox Code Playgroud)
在 /usr/local/bin/jupyter-ruby-env.sh 中:
#!/usr/bin/bash -l
export RUBYDIR=/opt/rubies/ruby-2.3.4
export PATH=${RUBYDIR}/bin:$PATH
export LD_LIBRARY_PATH=${RUBYDIR}/lib:$LD_LIBRARY_PATH
export GEM_HOME=${RUBYDIR}
export GEM_PATH=${RUBYDIR}
exec ${RUBYDIR}/bin/iruby kernel $@
Run Code Online (Sandbox Code Playgroud)
正如我所说,就基本的 Ruby 而言,所有这些都有效:我可以运行在 Ruby 教程中找到的代码。我唯一不明白的是情节。我安装的所有其他 jupyterhub 内核(例如 python、SageMath、Julia)在绘图时都没有问题。
有任何想法吗?
我对 JupyterHub 不太了解。但 Nyaplot 已经好几年没有更新了。
如果你想在 iruby 中生成绘图,请尝试这些项目。
以下项目是实验性的。