#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()