首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过派生从NodeJS调用python脚本时分割错误(内核转储)

通过派生从NodeJS调用python脚本时分割错误(内核转储)
EN

Stack Overflow用户
提问于 2014-02-25 01:17:16
回答 1查看 1.8K关注 0票数 3

我有python脚本,它通过统计R(通过PypeR)输出长列表。这个python脚本运行得非常好。

现在我试图通过NodeJS的派生功能从child_process运行这个脚本,但是它失败了,出现了以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "pyper_sample.py", line 5, in <module>
    r=R()

  File "/home/mehtam/pyper.py", line 582, in __init__
    'prog' : Popen(RCMD, stdin=PIPE, stdout=PIPE, stderr=return_err and _STDOUT or childstderr, startupinfo=info), 
  File "/usr/lib64/python2.6/subprocess.py", line 642, in __init__

    errread, errwrite)
  File "/usr/lib64/python2.6/subprocess.py", line 1234, in _execute_child

    raise child_exception
OSError: [Errno 2] No such file or directory

./temp.sh: line 1: 27500 Segmentation fault      (core dumped) python pyper_sample.py o1dn01.tsv cpu_overall

child process exited with code : 139

注意:我的python脚本运行得很好。我已经手动测试过了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-25 18:02:37

我的python脚本运行得很好。我已经手动测试过了。

输出清楚地显示OSError: No such file or directory异常发生在Popen()调用过程中。

这意味着程序找不到,

代码语言:javascript
复制
>>> from subprocess import Popen
>>> p = Popen(["ls", "-l"]) # OK
>>> total 0

>>> p = Popen(["no-such-program-in-current-path"])  
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

另外,将整个命令作为字符串而不是列表(默认情况下为shell=False)传递是一个常见错误:

代码语言:javascript
复制
>>> p = Popen("ls -l")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

确保:

  • 您的(子)程序可以在当前的$PATH中找到
  • 使用列表参数而不是字符串
  • 测试它是否有效,如果您从不同的工作目录、不同的用户等手动运行它。

注意:您的Popen()调用通过了仅为startupinfostartupinfo。在Unix上使用多个参数的字符串命令在"No such file or directory"错误时失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22002701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档