Как показывать сообщения во время установки PIP без аргумента —verbose

#python #python-2.7 #pip

#python #python-2.7 #pip

Вопрос:

Инструкции Print не отображаются пользователю из setup.py . Какой метод можно использовать для отображения инструкций печати без использования аргумента —verbose через PIP с дистрибутивом sdists?

Я пробовал писать в stderr.

Способ первый

 import logging
logging.basicConfig(format='%(message)s')
logging.warning('I print to stderr by default')
  

Способ второй

 from __future__ import print_function

def myprint(*args, **kwargs):
    print(*args, file=sys.stderr, **kwargs)

myprint("Print to stderr")
  

Комментарии:

1. Вы распространяете свой пакет как колесо? В этом случае ваша последующая установка будет выполняться во время упаковки, но не во время установки, поэтому сообщение в любом случае будет бесполезным.

2. Я протестировал пакет. Скрипт после установки запускается во время установки после установки зависимостей. Предполагая, что pip install -e C:absolutepathtopackage -v является репрезентативным.

3. Я удалил ссылки на postscript, поскольку это отвлекает от цели вопроса.

4. Распространение исходного кода? Да, для sdists это может сработать, но не для wheels.

5. Исходный дистрибутив — sdist.

Ответ №1:

Очень некрасивым обходным путем является вход в log_file вместо print. Затем прочитайте выходные данные файла журнала в новом окне.

 import os
import logging

logging.basicConfig(format='%(message)s')
log = logging.getLogger()
log.addHandler(logging.FileHandler("install.log", "w"))


log.warning("nThis is a test.n" "Logging messagesn" "End of logn")

def display():
    logpath = (os.getcwd()   "install.log")
    cmd_command = ('type '   logpath)
    print cmd_command
    os.system("start /wait cmd /k "   cmd_command)

def main():
    display()
    pass

if __name__ == '__main__':
    main()