如果我在 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。