BASH CODE:
os.system("source /proj/common/tools/repo/etc/profile.d/repo.sh")
os.system("repo project init " + branch)
os.system("repo project sync")
os.system("source poky/fnc-init-build-env build")
os.chdir("poky/build")
os.system("bitbake -g " + image)
我将此bash代码转换为python(版本2.7 )。在执行我的python代码时,我收到 repo命令未找到 消息。
PYTHON CODE:
sh: repo: command not found
sh: repo: command not found
错误消息:
{{1}}
我尝试使用subprocess.call(),我收到相同的错误消息。
答案 0 :(得分:1)
问题出在这个电话中:
os.system("source /proj/common/tools/repo/etc/profile.d/repo.sh")
问题是它在一个单独的子shell中运行source
,当子shell退出对环境的所有更改时(cd
命令,如果有任何和环境变量,最值得注意的是PATH
)走了。
我的建议是继续使用您使用的shell脚本 - 只需通过一次os.system()
调用从Python调用它。在shell脚本中,您可以使用source
。
答案 1 :(得分:0)
您至少可以使用repo命令的完整路径。
这样可以避免子shell必须知道repo命令的位置(意味着在每个PATH
调用中设置了正确的os.system
)。