输出重定向到文件时,Visual Studio cl.exe不显示错误消息

时间:2012-03-06 21:03:10

标签: visual-studio-2008 redirect

我在Windows / XP上安装了Microsoft Visual Studio 2008。我正在尝试安装具有C扩展名的Python包。通常,您键入“setup.py install”以交互方式执行此操作。

我遇到的问题是:如果我在cmd提示符下键入“setup.py install”,它会向我显示编译错误,如下所示:

creating build\temp.win32-2.7\Release\src
c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Python27\include -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC /Tcsrc/PixCte_FixY.c /Fobuild\temp.win32-2.7\Release\src/PixCte_FixY.obj PixCte_FixY.c
c:\python27\include\pyconfig.h(227) : fatal error C1083: Cannot open include file: 'basetsd.h': No such file or directory
error: command '"c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2

但如果我输入“setup.py install> logfile 2>& 1”,日志文件会显示

building 'acstools.PixCte_FixY' extension
c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe /c /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Python27\include -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Python27\PC /Tcsrc/PixCte_FixY.c /Fobuild\temp.win32-2.7\Release\src/PixCte_FixY.obj
error: command '"c:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\cl.exe"' failed with exit status 2

因此它报告说编译失败了,但不知道问题是什么。

所以,我的问题是:如何将完整的编译器输出收集到文件中?

1 个答案:

答案 0 :(得分:0)

我猜没有好的答案。我遇到了这个解决方法:

我使用了这个python程序:

import sys
import subprocess

print sys.argv

cmd = [ sys.executable, "setup.py" ] + sys.argv[1:]

p = subprocess.Popen( cmd, stdout=subprocess.PIPE,
    stderr=subprocess.STDOUT, shell=False,
    creationflags = subprocess.CREATE_NEW_PROCESS_GROUP )
while 1 :
    n = p.stdout.read(256)
    if n == '' :
        break
    sys.stdout.write(n)
p.wait()

我把它命名为“runsetup.py”。现在使用“runsetup.py install”而不是“setup.py install”。不知何故,cl.exe看到了与其环境不同的东西,并实际打印了所有错误消息。