Ошибка IPython при выполнении системных команд
Если я выполняю какие-либо системные комментарии в ipython2/3 на моем компьютере с Ubuntu 16.04, я получаю сообщение об ошибке отказа в доступе следующим образом:
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
как
sudo pip2 install ipython
sudo pip3 install ipython
Но проблема все еще сохраняется. Я не получаю эту проблему в ноутбуке Jupyter.
Как я могу использовать системные команды в IPython?
2 ответа
Когда я настраивал свой компьютер, я создал фиктивного пользователя rootUser в качестве первого пользователя- администратора. Позже я создал другого пользователя с тем же именем, uid и gid, что и на моем рабочем месте, и добавил его в sudo. Это как-то вызывает проблемы с разрешениями, что действительно странно. Хотя я не знаю истинную причину проблемы, но я воспроизвел ее с помощью описанных выше шагов. Я решил эту проблему, создав первого пользователя с тем же именем, что и мое рабочее место. Позже я соответственно изменил разрешения uid, gid и file/direct. Это решило проблему, и теперь я могу нормально использовать ipython2/3.
Как написано в ipython docs - вы должны добавить к команде префикс !
например для 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']