Bash脚本到pythonscript Convertion

时间:2018-04-24 04:19:27

标签: python bash git python-2.7 shell

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(),我收到相同的错误消息。

2 个答案:

答案 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)。