python - 提示用户安装软件包 "pip install <pkg>"

标签 python stdout pip distutils

我创建了一个包含 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/

相关文章:

python - "Couldn' t 将字符串转换为 float ”在 python 中读取 .DBF 文件 - 处理错误的传感器数据

python - 如何在服务器上没有 root 访问权限的情况下完全安装 numpy?

python - 从目录导入模块而不触及 sys.path

python - 为什么 sys.stdout.write 输出意外字符?

spring - 禁用 Spring 日志,以获得可读日志

java - 通过 bash 和 Java 的 ProcessBuilder api 运行相同的命令会得到不同的输出

python - 在虚拟环境中安装python站 pip 包

python-3.x - 我正在尝试在 windows10 上使用 pip 安装 fbprophet 并显示以下错误

python - 刻度线与 matplotlib 表中的单元格不对齐

python - 如何通过切片添加到列表元素?