看到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
答案 0 :(得分:3)
我无法理解所有您的症状,但错误[Errno 2]
消息表明您的SHELL
环境变量包含的值不是指向现有的shell可执行文件。
通常,SHELL
包含默认shell可执行文件的完整路径,例如/bin/bash
。
你可以尝试的事情:
echo $SHELL
的输出,并确保它包含默认shell可执行文件的完整路径。ipython
值调用SHELL
并查看问题是否消失:SHELL=/bin/bash ipython
。 pwd
实际上并不调用shell实例,因此这就是您没有看到错误的原因。
相比之下,ls
(间接)和!ls
(直接)可以。
我正在运行相同的版本,iptest core
也在我的机器上失败,虽然不同(ImportError: No module named nose.plugins.builtin
) - 但是,至少在我的情况下,它似乎与{{1}运行shell无关,这很好。