【问题标题】:problems with system shell access from ipython从 ipython 访问系统 shell 的问题
【发布时间】:2014-07-18 01:06:25
【问题描述】:

在 iPython 中看到一些奇怪的行为,这似乎取决于它的启动方式。在终端中启动时,某些 shell 命令可以工作 (pwd),但 'ls' 和 '!ls' 都会出错 - 请参阅下面的 OSError Traceback §。

当使用 Qtconsole 启动时:“ipython qtconsole --pylab=inline”,一切似乎都很好。

[附加信息:当 ipython 作为笔记本启动时,shell 命令可以正常工作。]

[附加信息#2:“iptest core”产生4个错误——都与文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”有关]

有什么建议吗?谢谢!运行 Python 2.7.5、IPython 2.1.0、Mac OSX Mavericks。

...

/Library/Python/2.7/site-packages/IPython/core/interactiveshell.pyc in system_raw(self, cmd)
   2277             cmd = py3compat.unicode_to_str(cmd)
   2278             # Call the cmd using the OS shell, instead of the default /bin/sh, if set.
-> 2279             ec = subprocess.call(cmd, shell=True, executable=os.environ.get('SHELL', None))
   2280             # exit code is positive for program failure, or negative for
   2281             # terminating signal number.


OSError: [Errno 2] No such file or directory

【问题讨论】:

    标签: macos shell ipython


    【解决方案1】:

    我无法理解所有您的症状,但错误 [Errno 2] 消息表明您的 SHELL 环境变量包含不指向现有 shell 可执行文件的值.

    通常,SHELL 包含默认 shell 可执行文件的完整路径,例如,/bin/bash

    你可以尝试的事情:

    • 检查echo $SHELL 的输出并确保它包含默认shell 可执行文件的完整路径。
    • 使用显式 SHELL 值调用 ipython 并查看问题是否消失:SHELL=/bin/bash ipython

    pwd 实际上并没有调用 shell 实例,所以这就是你看不到错误的原因。 相比之下,ls(间接)和!ls(直接)可以。


    我正在运行相同的版本,iptest core 在我的机器上也失败了,虽然不同 (ImportError: No module named nose.plugins.builtin) - 但是,至少在我的情况下,它似乎与从 ipython 运行 shell 无关,它工作正常.

    【讨论】:

    • 设置 SHELL 变量解决了问题,现在 iptest 核心可以顺利通过。
    • @user56870:我很高兴听到这个消息——知道为什么没有设置SHELL(通常是这样)吗?还是设置并包含无效值?
    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 2011-08-21
    • 2023-03-05
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2017-06-30
    相关资源
    最近更新 更多