2017-11-22 13 views
0

yocto Pyro에서 python 스크립트를 사용하여 패키지를 빌드하고 있습니다.Python Subprocess.Popen이 교차 플랫폼 Yocto에서 작동하지 않습니다.

파이썬 스크립트에서 나는 subprocess.Popen을 사용하고 있습니다.

필자는 파이썬 스크립트가 크로스 플랫폼에서 실행될 때마다 크로스 플랫폼에서 파이썬 서브 프로세스 경로를 취해야한다. 그러나 필자의 경우 네이티브 경로 "/usr/lib/python2.7/subprocess.py"즉 PC.

그 때문에 저는 in _execute_child raise child_exception입니다. 이 문제를 해결하는 데 도움이 될 수 있습니까?

오류가

File "/usr/lib/python2.7/subprocess.py", line 566, in check_output 
    process = Popen(stdout=PIPE, *popenargs, **kwargs) 
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ 
    errread, errwrite) 
File "/usr/lib/python2.7/subprocess.py", line 1335, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 

PS 이하 : 난 이미 "쉘 = True"로 옵션을 시도했지만 내 문제가 해결되지 않았다.

답변

0

원하는 파이썬 설정을 가리키는 환경 변수를 설정하고이를 서브 프로세스 호출에 전달해야합니다. 당신이 빌드시에 스크립트를 실행하는 경우는 목표를 실행할 수 다음이 호스트 파이썬을 실행

1

export venv='/path/to/python' 

venv = os.environ["VENV_PYTHON"] 
p = subprocess.Popen([venv, command], env=os.environ.copy()) 

이런 식으로 뭔가 원하는 파이썬 설치하여 파이썬 스크립트를 실행합니다 파이썬 바이너리가 타겟 바이너리라는 명백한 이유 때문입니다.

예외는 popen이 찾을 수없는 바이너리를 실행하려고한다는 것입니다. 빌드 $ PATH는 소실되어 있으므로 bitbake 밖에있는 것을 포함하지 않는다는 것을 기억하십시오.