子进程调用不能与ipython笔记本服务器远程工作

时间:2014-09-16 19:53:26

标签: python subprocess ipython remote-server

我在python类中使用了subprocess.call("ruby_script.rb > output.txt", shell=True)之类的代码来运行外部脚本。

我的Ubuntu台式机有ipython笔记本电脑服务器。

在我的MacBook上,每当我远程运行使用包含上述subprocess.call行的类的单元格时,我都会获得非零退出状态,说无法找到该目录。如果我尝试像subprocess.check_call(["ls", "-l"], shell=True)这样的简单命令,我会得到CalledProcessError: Command '['ls', '-l']' returned non-zero exit status 2

在我的Ubuntu桌面计算机上,每当我登录相同的笔记本服务器并运行相同的单元格时,我都会得到完美的结果。如果我尝试像subprocess.check_call(["ls", "-l"], shell=True)之类的简单命令,我会得到0,表示没有任何错误。

我想知道为什么这些代码无法远程工作。

在我的Ubuntu台式机上,服务器的python版本是2.7.6,而ipython版本是2.2.0。

我的MacBook OS X版本是10.9.4,桌面版的Ubuntu版本是14.04 LTS。

谢谢!

我通过远程登录到nbserver,将代码粘贴到笔记本中的单元格并运行单元格,尝试了Charles在MacBook上建议的代码。

import subprocess subprocess.check_call(['ls', '-l'], cwd='/')

---------------------------------------------------------------------------
CalledProcessError                        Traceback (most recent call last)
 in ()
      1 import subprocess
----> 2 subprocess.check_call(['ls', '-l'], cwd='/')

/usr/lib/python2.7/subprocess.pyc in check_call(*popenargs, **kwargs)
    538         if cmd is None:
    539             cmd = popenargs[0]
--> 540         raise CalledProcessError(retcode, cmd)
    541     return 0
    542 

CalledProcessError: Command '['ls', '-l']' returned non-zero exit status 2

顺便说一句,如果我在运行nbserver的同一个Ubuntu桌面上执行相同的操作,

0 个答案:

没有答案