您看不到输出,因为您已经重定向了子进程的stdout/stderr。在
您的程序挂起是因为sphinx-quickstart等待您提供一些输入,例如,传递新行以接受默认值,或者在没有默认值的情况下输入某些内容(例如,对于项目名称、作者值)。在
另一个原因是,:后面没有新行,sphinx-quickstart在重定向stdout时不会及时刷新提示。在
解决方法:一次读取一个字符,而不是逐行读取,然后使用-u选项运行python(或使用PYTHONUNBUFFEREDenvvar)来禁用缓冲。在
确保每次在输出中看到提示行(以':'字符结尾)时脚本都提供有效的输入:#!/usr/bin/env python
from __future__ import print_function
import os
from subprocess import Popen, PIPE, CalledProcessError
answers = {
'Root path': 'doc',
'source and build': 'y',
'autodoc': 'y',
'Project name': '',
'Author name': '',
'Project version': '',
}
def iter_chunks(pipe, terminator_char):
"""Yield chunks from