在linux shell中设置cflags和cppflags变量,然后在python

时间:2015-10-10 01:50:56

标签: python

我正在尝试编译一个名为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 模块?

1 个答案:

答案 0 :(得分:1)

运行一个可以实际设置它们的命令。

env CFLAGS=... CPPFLAGS=... echo ...