首页 > 解决方案 > bash 单元魔法运行,但随后吐出一个很长的错误

问题描述

鉴于以下bash细胞魔法:

> %%bash
! ls

该命令运行 - 但随后引发异常:

Untitled.ipynb
contradictory-my-dear-watson.zip
sample_submission.csv
test.csv
train.csv
---------------------------------------------------------------------------
CalledProcessError                        Traceback (most recent call last)
<ipython-input-2-9b04a68257be> in <module>
----> 1 get_ipython().run_cell_magic('bash', '', '! ls\n')

~/miniconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py in run_cell_magic(self, magic_name, line, cell)
   2360             with self.builtin_trap:
   2361                 args = (magic_arg_s, cell)
-> 2362                 result = fn(*args, **kwargs)
   2363             return result
   2364 

~/miniconda3/lib/python3.7/site-packages/IPython/core/magics/script.py in named_script_magic(line, cell)
    140             else:
    141                 line = script
--> 142             return self.shebang(line, cell)
    143 
    144         # write a basic docstring:

<decorator-gen-110> in shebang(self, line, cell)

~/miniconda3/lib/python3.7/site-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
    185     # but it's overkill for just that one bit of state.
    186     def magic_deco(arg):
--> 187         call = lambda f, *a, **k: f(*a, **k)
    188 
    189         if callable(arg):

~/miniconda3/lib/python3.7/site-packages/IPython/core/magics/script.py in shebang(self, line, cell)
    243             sys.stderr.flush()
    244         if args.raise_error and p.returncode!=0:
--> 245             raise CalledProcessError(p.returncode, cell, output=out, stderr=err)
    246 
    247     def _run_script(self, p, cell, to_close):

CalledProcessError: Command 'b'! ls\n'' returned non-zero exit status 1.

错误的原因是什么,是否有修复/解决方法?

标签: jupyter-notebook

解决方案


我有一个类似的问题。我不确定这是否是同样的问题。但是我给出了我的解决方案。

我的情况:我用 Conda 安装了 bash_kernel 并在 Jupyter Notebook 环境中使用它。尽管如此,细胞魔法“%%bash”并没有起作用。“!” 作品。任何!通常不建议同时使用细胞魔法和线魔法。然而我的问题是细胞魔法不起作用。

事实证明,即使在 Jupyter 中,这也是一个 Windows/Linux 问题。我正在使用 Windows。解决方案是在 Windows 中使用 Linux Bash。

如果 Jupyter notebook 是从 Git Bash 启动的,那么它就可以工作。另一种方法是在 Windows 下安装 Ubuntu 并从 Ubuntu Bash 运行它。这也有效。但是,您必须将 Git Bash 连接到 Anaconda。这在这里解释:

“在你的 GitBash 提示符中输入以下命令。Anaconda3
/Scripts/activate
假设你在你的主目录中。这将允许你从 GitBash 运行 jupyter 并使用来自 jupyter 的 UNIX 命令。”
[在这里查找][1]


推荐阅读