问题是导出不是实际的命令或文件.它是bash和sh之类的shell的内置命令,所以当你尝试subprocess.Popen时,你会得到一个异常,因为它找不到导出命令.默认情况下,Popen执行一个os.execvp()来生成一个新进程,该进程不允许使用shell内部函数.
你可以做这样的事,虽然你必须改变你对Popen的号召.
您可以指定shell = True以使其使用shell命令.
class subprocess.Popen(args,bufsize = 0,executable = None,stdin = None,stdout = None,stderr = None,preexec_fn = None,close_fds = False,shell = False,cwd = None,env = None,universal_newlines = False,startupinfo = None,creationflags = 0)
On Unix,with shell=True: If args is a string,it specifies the command string to execute through the shell. This means that the string must be formatted exactly as it would be when typed at the shell prompt. This includes,for example,quoting or backslash escaping filenames with spaces in them. If args is a sequence,the first item specifies the command string,and any additional items will be treated as additional arguments to the shell itself. That is to say,Popen does the equivalent of:
Popen(['/bin/sh','-c',args[0],args[1],...])