微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用python脚本从不同的目录调用make

我需要从一个Python脚本中调用make(构build一个makefile)到一个不同于我所在的目录中。 如果我只是做:

build_ret = subprocess.Popen("../dir1/dir2/dir3/make",shell = True,stdout = subprocess.PIPE)

我得到以下:/ bin / sh:../dir1/dir2/dir3/make:没有这样的文件或目录

我试过了:

build_ret = subprocess.Popen("(cd ../dir1/dir2/dir3/; make)",stdout = subprocess.PIPE)

但make命令被忽略。 我甚至没有得到“没有build立”的消息。

如何强制我的应用程序只能打开一个exe文件? qt,linux

如何从Pacman / Yaourtsearch返回包列表

在linux中创build一个新的信号

linux pyodbc freeTDS mssql服务器在一段时间后停止工作

Netcat进入apache密码保护的目录

我也尝试使用“沟通”,但没有成功。 这在Red Hat Linux上运行。

Linux的CP与正则expression式

如何在Python中正确实现基于进程的锁?

git命令显示来自sha1散列的分支/function名称

PHP不显示错误

UUID生成器问题

我会和@ Philipp的使用cwd的解决方案一起使用,但是作为一个附注,你也可以使用-C选项来做:

make -C ../dir1/dir2/dir3/make

-C dir ,–directory = dir

在读取makefile或执行其他任何操作之前,转到目录dir 。 如果指定了多个-C选项,则每个选项都相对于前一个选项进行解释: -C / -C etc等同于-C /etc 这通常与make的递归调用一起使用。

使用cwd参数,并使用Popen的列表形式:

subprocess.Popen(["make"],stdout=subprocess.PIPE,cwd="../dir1/dir2/dir3")

调用shell几乎是不需要的,并且由于涉及到额外的复杂性而可能引起问题。

尝试使用完整路径,可以通过调用获取python脚本的位置

sys.argv[0]

刚刚得到的路径:

os.path.dirname(sys.argv[0])

你会在os.path模块中找到相当多的路径操作

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐