【问题标题】:How to print warnings and errors when using setuptools (pip)使用 setuptools (pip) 时如何打印警告和错误
【发布时间】:2017-06-18 15:55:19
【问题描述】:

我正在使用 setuptools 打包代码,以便使用它可以轻松安装

cd project_name && pip install .

在设置过程中,我想警告用户有关预先存在的配置文件并在系统上打印一些安装后说明。例如

/etc/project_name/project.conf exists. Not copying default config file.

我尝试使用print 和logging.warning(),但使用pip 安装时仍然没有出现警告。我感觉我遗漏了一些明显的东西。

我们正在尝试在 Redhat 系列 >= el6 和 Ubuntu >= 14.04LTS 上支持 3.0 > python >= 2.6

【问题讨论】:

  • 提供您的setup.py和logging/print
  • @AzatIbrakov 我试过了,使用logging.warning() 和print() 没有出现。
  • 添加您的 setup.py 脚本,以便我们可以看到您到目前为止所做的尝试

标签: python pip setuptools error-logging


【解决方案1】:

如果您查看 pip 源代码,在负责运行设置脚本的函数中,call_subprocess (source here) 会显示:

def call_subprocess(cmd, show_stdout=True, cwd=None, ...
    ...
    # The obvious thing that affects output is the show_stdout=
    # kwarg. show_stdout=True means, let the subprocess write directly to our
    # stdout. Even though it is nominally the default, it is almost never used
    # inside pip (and should not be used in new code without a very good
    # reason); as of 2016-02-22 it is only used in a few places inside the VCS
    # wrapper code. Ideally we should get rid of it entirely, because it
    # creates a lot of complexity here for a rarely used feature.
    #
    # Most places in pip set show_stdout=False. What this means is:
    # - We connect the child stdout to a pipe, which we read.
    # - By default, we hide the output but show a spinner -- unless the
    #   subprocess exits with an error, in which case we show the output.
    # - If the --verbose option was passed (= loglevel is DEBUG), then we show
    #   the output unconditionally. (But in this case we don't want to show
    #   the output a second time if it turns out that there was an error.)

简而言之,只有在以下情况下才能看到输出:

  • 您的设置因错误而退出,或者
  • 用户使用详细标志 -v 调用 pip

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多