2017-06-18 3 views
0

J'utilise setuptools pour emballer le code tel qu'il peut être facilement installé à l'aideComment imprimer des avertissements et des erreurs lors de l'utilisation setuptools (pip)

cd project_name && pip install . 

Au cours du processus d'installation, je veux avertir l'utilisateur avant -fichiers de configuration existants et imprimez quelques instructions de post-installation sur le système. Par exemple

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

J'ai essayé d'utiliser print et logging.warning() mais les avertissements ne semblent pas lors de l'installation à l'aide pip. J'ai le sentiment qu'il me manque quelque chose d'évident.

Nous essayons de soutenir 3.0> python> = 2,6 sur la famille Redhat> = EL6 et Ubuntu> = 14.04LTS

+0

fournir votre '' setup.py'with logging'/'print' –

+0

@AzatIbrakov J'ai essayé, en utilisant' logging.warning() 'et' imprimer() 'il n'apparaît pas. – raghulmz

+1

ajoutez votre script 'setup.py' pour voir ce que vous avez essayé jusqu'ici –

Répondre

1

Si vous jetez un oeil à la source de pépin, dans la fonction responsable de l'exécution du script d'installation , call_subprocess (source here), il dit:

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

En bref, vous pouvez voir la sortie que si:

  • vos sorties de configuration avec une erreur, ou
  • appels utilisateur PiP avec -v, le drapeau bavard