执行系统命令时 IPython 出错

执行系统命令时 IPython 出错

如果我在 Ubuntu 16.04 机器上的 ipython2/3 中执行任何系统命令,我会收到以下权限被拒绝错误:

In [1]: ls
--------------------------------------------------------------------------
PermissionError                           Traceback (most recent call last)
<ipython-input-1-5b21b94dda0e> in <module>()
----> 1 get_ipython().magic('ls ')

我在 Ubuntu 14.04 中不需要做任何特别的事情。我已经安装了 ipython2 和 ipython3

pip2 install ipython --user
pip3 install ipython --user

sudo我也尝试使用as安装它

sudo pip2 install ipython
sudo pip3 install ipython

但问题仍然存在。我在 jupyter notebook 中没有遇到这个问题。

如何在 IPython 中使用系统命令?

答案1

正如所写ipython 文档- 您应该在命令前加上!

例如ls你应该执行!ls

字符串列表 (IPython.utils.text.SList) 是处理系统命令输出的便捷方式。它们由 var = !cmd 语法生成。

首先,我们获取‘ls -l’的输出:

[Q:doc/examples]|2> lines = !ls -l
 ==
['total 23',
 '-rw-rw-rw- 1 ville None 1163 Sep 30  2006 example-demo.py',
 '-rw-rw-rw- 1 ville None 1927 Sep 30  2006 example-embed-short.py',
 '-rwxrwxrwx 1 ville None 4606 Sep  1 17:15 example-embed.py',
 '-rwxrwxrwx 1 ville None 1017 Sep 30  2006 example-gnuplot.py',
 '-rwxrwxrwx 1 ville None  339 Jun 11 18:01 extension.py',
 '-rwxrwxrwx 1 ville None  113 Dec 20  2006 seteditor.py',
 '-rwxrwxrwx 1 ville None  245 Dec 12  2006 seteditor.pyc']

答案2

当我设置我的机器时,我创建了一个虚拟的 rootUser 作为第一个行政用户。后来,我又创建了另一个具有相同姓名用户ID作为我的工作场所并将其添加到须藤。这不知怎么就导致权限问题,这真的很奇怪。虽然我不知道问题的实际原因,但我确实用上述步骤重现了它。我通过创建与我的工作场所同名的第一个用户解决了这个问题。后来我改变了用户ID并相应地设置文件/直接权限。这解决了问题,我现在可以正常使用 ipython2/3。

相关内容