我正在尝试编译一个名为wxpython的GUI模块的源代码。什么 我打算做的是使用子进程来运行编译程序的python脚本。
为了简短起见..假设我想使用linux“echo”命令通过使用子进程打印“hello”,如下所示:
import subprocess
import shlex
subprocess.Popen(shlex.split("CFLAGS=-Wno-error=format-security CPPFLAGS=-Wno-error=format-security echo hello"),shell=False)
我会收到错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
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
这让我觉得子进程不设置环境变量
然而,当我使用os模块尝试回应“你好”
时os.system("CFLAGS=-Wno-error=format-security CPPFLAGS=-Wno-error=format-security echo hello")
我得到了预期的结果
hello
0
我正在使用子进程来执行我的大部分linux shell命令行...因此我试图避免在我的python脚本中使用os语句和子进程函数的混合,实际上可以做同样的事情。
问题:
如何在shell中使用python在我的linux shell中执行“echo hello”设置CLFAGS和CPPFLAGS环境变量,然后使用 subprocess 模块?
答案 0 :(得分:1)
运行一个可以实际设置它们的命令。
env CFLAGS=... CPPFLAGS=... echo ...