Visual studio 2008 将输出重定向到文件时,Visual Studio cl.exe不显示错误消息
我在Windows/XP上安装了Microsoft Visual Studio 2008。我正在尝试安装一个具有C扩展名的Python包。通常,键入“setup.py install”以交互方式执行此操作 我遇到的问题是:如果在cmd提示符下键入“setup.py install”,它会显示如下编译错误:Visual studio 2008 将输出重定向到文件时,Visual Studio cl.exe不显示错误消息,visual-studio-2008,redirect,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
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
所以它报告说编译失败了,但没有关于问题所在的线索
因此,我的问题是:如何将完整的编译器输出收集到一个文件中?我想没有好的答案。我偶然发现了这个变通方法: 我使用了这个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”。现在,我使用的不是“setup.py安装”,而是“runsetup.py安装”。不知何故,cl.exe看到了其环境的一些不同之处,并实际打印了所有错误消息。我想没有好的答案。我偶然发现了这个变通方法: 我使用了这个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”。现在,我使用的不是“setup.py安装”,而是“runsetup.py安装”。不知何故,cl.exe看到了其环境的一些不同之处,并实际打印了所有错误消息