我在yocto Pyro上使用python脚本构建包。
在Python脚本中,我正在使用subprocess.Popen
。
根据我的理解,当Python脚本运行Cross Platform时,它应该采用Cross-platfrom Python子进程路径,但在我的情况下,它采用本机路径" /usr/lib/python2.7/subprocess.py 34;即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:我已经尝试过" shell = True"选项,但它没有解决我的问题。
答案 0 :(得分:2)
如果您在构建时运行脚本,那么它将运行主机python,因为它无法运行目标python二进制文件,原因很明显是它的目标二进制文件。
您的展示的例外仅仅是您尝试运行popen无法找到的二进制文件。请记住,在构建内部$ PATH已经过消毒,因此不会包含它在bitbake之外的内容。
答案 1 :(得分:0)
您应该设置一个指向所需python设置的环境变量,并将其传递给子进程调用。像这样的东西
export venv='/path/to/python'
venv = os.environ["VENV_PYTHON"]
p = subprocess.Popen([venv, command], env=os.environ.copy())
这将使用所需的python设置启动你的python脚本