使用setuptools(pip)时如何打印警告和错误 [英] How to print warnings and errors when using setuptools (pip)

查看:121
本文介绍了使用setuptools(pip)时如何打印警告和错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用setuptools打包代码,以便可以使用

I am using setuptools to package code such that it can be easily installed using

cd project_name && pip install .

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

During the setup process, I want to warn the user about pre-existing config files and print some post install instructions on the system. For example

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

我尝试使用printlogging.warning(),但是使用pip安装时仍然没有出现警告.我感觉自己缺少明显的东西.

I have tried to use print and logging.warning() but still the warnings don't appear when installing using pip. I have a feeling I am missing something obvious.

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

We are trying to support 3.0 > python >= 2.6 on Redhat family >= el6 and Ubuntu >= 14.04LTS

推荐答案

如果您查看pip源,请在负责运行安装脚本的函数中,call_subprocess(

If you take a look at the pip source, in the function responsible for running the setup script, call_subprocess (source here), it says:

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.)

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

In short, you can see the output only if:

  • 您的设置退出并出现错误,或者
  • 用户使用-v(详细标志)呼叫pip
  • your setup exits with an error, or
  • user calls pip with -v, the verbose flag

这篇关于使用setuptools(pip)时如何打印警告和错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆