2017-05-24 1 views
4

저는 Python new comer입니다. C++에서 python 스크립트를 호출하려고했는데 (Raspberry Pi에서).C++에서 python을 호출하는 방법

std::string pythonCommand = "python Callee.py \""+a+"\" "+b; 
int res = system(pythonCommand.c_str()); 

나는 이것을 얻었다.

python: can't open file 'Callee.py': [Errno 2] No such file or directory 

그러나 Callee.py를 명령 줄과 함께 성공적으로 실행할 수 있으며 두 파일은 모두 같은 디렉터리에 저장됩니다.

내가 무엇이 누락 되었습니까?

+0

은 ([코드 삽입]주의 https://en.wikipedia.org/wiki/ Code_injection). –

+0

나를 위해 일한 경로를 Providing –

+0

파이썬과 연결하고 시스템을 거치지 않고 기본 인터프리터를 사용하는 것이 더 좋지 않습니까? – luk32

답변

3

일부 이상한 디렉토리 (예 : 다른 디렉토리)에서 Python 인터프리터 (및 python Callee.py 명령)를 실행하고있을 가능성이 높습니다.

system(3)으로 전화하기 전에 getcwd(3)을 사용하면 현재 작업 디렉토리를 확인할 수 있습니다.

디렉토리를 적절하게 변경하려면 system으로 전화하기 전에 chdir(2) 시스템 호출을 사용할 수 있습니다. 아마도 this을 참조하십시오.

나는 또한 Advanced Linux Programming

읽기를 읽어 보시기 바랍니다 또한 대한 Extending and Embedding the Python Interpreter; 하지만 통역사를 임베드해야한다면 Guile & Lua도 고려하십시오.

1

당신이

system("/work/test/pythonscript.sh") 

같은 것을 시도하고 파이썬 스크립트/실행 호출 방법이 스크립트 내부에 정의 할 수 있습니다.

이 당신이 형식의 오류를 통해 여행을 해달라고 방법 (c_string() 및 "\ r에"나 OS에 의존 행 끝)

+0

'/ work/test/pythonscript.sh' 파일이 실행 가능하고 적절한 셰번으로 시작하는 경우에만 작동합니다 –

+0

당신 말이 맞습니다. 그러나 OP가'Callee.py' 스크립트를 언급했기 때문에 나는이 문제가 이미 걱정되었다고 생각한다. 그것은 리눅스 머신에서 실행하는 경우에만 작동합니다. 다른 OS의 경우 경로를 올바르게 편집해야합니다. –