【发布时间】:2021-01-05 14:29:47
【问题描述】:
我在我的 jupyter notebook 中使用 iruby,内核按预期工作并接受所有类型的 ruby 语法
很遗憾,%%bash 命令会导致错误。所以在我的笔记本中没有可用的控制台命令。如果我切换回基本的 python 内核,%%bash 命令会按预期工作。
如何实现 bash 命令在 iruby 内核中运行?有什么我忘记安装或设置的吗?
我在 Ubuntu 20.04 中使用以下设置:
我也使用 rvm 来管理我的 ruby 版本。
基本设置
sudo apt install python3-pip python3-dev
sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv
pip install jupyter
安装 iruby
gem install ffi-rzmq
gem install iruby --pre
iruby register --force
设置和启动
rvm use ruby-2.7.2
mkdir ~/ruby_notebook
virtualenv ~/ruby_notebook/ruby_env
source ~/ruby_notebook/ruby_env/bin/activate
jupyter notebook --notebook-dir ~/ruby_notebook
任何想法如何解决这个问题,以便我可以使用 bash 命令?
======== 更新和解决方案 ======
感谢工程师mnky,我找到了解决方案:
就像在 python notebook 中一样,我想实现以下输出:
使用命令 %x(ls -la) 我得到一个执行,但输出看起来不同
为了得到正确的输出,我添加了以下内容:
%x(ls -la).each_line(chomp: true){|s| p s}
接近输出,但随后在笔记本中执行字符串输出。
所以我的最终解决方案,也是为了让执行命令不那么复杂,我现在在笔记本的开头使用了一个方法。
def execute_console(input)
%x(#{input}).each_line(chomp: true){|s| p s}
return nil
end
这样我就可以在我的笔记本中使用 Rails 这样的特殊命令来执行
rails routes
在
execute_console('rails routes')
输出和预期一样,没有任何字符串输出。
语法错误也会按预期打印出来。
【问题讨论】:
-
以下也应该可以工作
require 'pp'; pp(%x(ls -la)); nil
标签: ruby-on-rails ruby jupyter-notebook jupyter iruby