我创建了一个包含setup.py文件的包的tar.gz。 setup.py使用distutils.core中提供的setup()函数。我想在用户运行“pip install .tar.gz”时提示用户。不幸的是,它看起来像pip重定向“python setup.py install”命令的所有stdout和stderr通过一个特殊的日志过滤器,它逐行读取stdout。这意味着我不能有“电子邮件:...”这样的提示,因为“电子邮件:”直到用户按下回车后才会打印。此外,日志过滤器会缩进每行输出,这是不理想的。
答案 0 :(得分:2)
不要那样做。
如果在安装过程中绝对需要来自用户的信息,请询问要设置的环境变量,如果未设置则失败。更好的是,需要一个纯文本配置文件来运行您的模块 - 并在安装过程中使用默认值设置它
不要尝试在安装过程中进行交互式会话,因为PIP和easy_install的想法是他们还安装了包的先决条件 - 因此他们可以批量安装许多包。用户只希望pip install能够完成它的工作,意外的交互式提示将破坏自动安装,预先连接链,buildout安装,远程安装等等。