为什么/ usr / local / bin在我的C ++程序中无法识别?

时间:2016-09-07 10:06:26

标签: python c++

我的C ++代码:

int main(int argc, const char * argv[])
{
    system("python test.py");
    return 0;
}

我在/ usr / local / bin中有一个程序foo,我可以在Unix控制台中输入foo并启动它。

以下Python脚本(test.py)有效:

from subprocess import call
call(["/usr/local/bin/foo"])

这个没有(带有“未找到命令”错误):

from subprocess import call
call(["foo"])

为什么我的Python脚本在从C ++执行时无法直接调用程序?

修改

我在Mac OSX上。我怀疑这与C ++可执行文件未添加的文件夹/usr/local/bin有关。

修改

 which kallisto
 /usr/local/bin/kallisto

cat test.py

from subprocess import call
call(["kallisto"])

python test.py

kallisto 0.43.0

In my C++ run:

Traceback (most recent call last):
  File "/Users/tedwong/Sources/QA/test.py", line 2, in <module>
    call(["kallisto"])
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory 

1 个答案:

答案 0 :(得分:3)

感谢@ ilent2,他的回答解决了我的问题。我使用IDE来运行C ++代码,但从未意识到我必须告诉IDE我的路径。当我直接在控制台中运行相同的程序时,它可以工作。