Python 保存从setup.py生成的安装日志

Python 保存从setup.py生成的安装日志,python,distutils,setup.py,Python,Distutils,Setup.py,是否有办法保存在安装使用setup.py安装的程序期间生成的输出?我想将其写入setup.py脚本本身,而不是在运行setup.py时写入终端。在调用setup()函数之前,将sys.stdout(和sys.stderr重定向到日志文件。) 确保将stdout(和stderr)还原为其默认引用,并将日志文件的内容打印到stdout 您的setup.py应如下所示: from setuptools import setup, find_packages import sys stdout = s

是否有办法保存在安装使用setup.py安装的程序期间生成的输出?我想将其写入setup.py脚本本身,而不是在运行setup.py时写入终端。在调用
setup()
函数之前,将
sys.stdout
(和
sys.stderr
重定向到日志文件。)

确保将
stdout
(和
stderr
)还原为其默认引用,并将日志文件的内容打印到
stdout

您的setup.py应如下所示:

from setuptools import setup, find_packages
import sys

stdout = sys.stdout
stderr = sys.stderr

log_file = open('log', 'w')
sys.stdout = log_file
sys.stderr = log_file

setup ( 
        ...  ,
        ...
      )

# Make sure to close the log file. You could also use with to surround the setup()
# To ensure log file is closed in the event of exception.
log_file.close()

sys.stdout = stdout
sys.stderr = stderr

with open('log', 'r') as log_file:
    sys.stdout.write(log_file.read())

您可以在终端或powershell中尝试以下操作

pyhton.exe setup.py >> logfile.txt

这应该将所有控制台输出附加到logfile.txt中,这几乎可以正常工作。在将mysql-python安装到python2.7虚拟环境中时,它错过了一个编译器警告。