我创建了一个包含 setup.py 文件的包的 tar.gz。 setup.py 使用 distutils.core 中提供的 setup() 函数。我想在用户运行“pip install .tar.gz”时提示用户。不幸的是,看起来 pip 通过一个特殊的日志过滤器重定向了“python setup.py install”命令的所有 stdout 和 stderr,该过滤器逐行读取 stdout。这意味着我无法收到诸如“电子邮件:...”之类的提示,因为只有在用户按下 Enter 后才会打印“电子邮件:”。此外,日志过滤器会缩进输出的每一行,这并不理想。
最佳答案
不要这样做。
如果在安装过程中绝对需要从用户那里获取信息,请要求设置环境变量,如果未设置则失败。更好的是,需要一个纯文本配置文件来运行您的模块 - 并在安装过程中使用默认值设置它
不要尝试在安装过程中进行所需的交互式 session ,因为 PIP 和 easy_install 的想法是它们还安装软件包的先决条件 - 因此它们可能会批量安装很多软件包。用户只会期望 pip install 完成其工作,而意外的交互式提示将破坏自动安装、先决条件链、构建安装、远程安装等。
关于python - 提示用户安装软件包 "pip install <pkg>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8532369/