Ошибка матрицы: Фатальная ошибка: локальный () встретился с ошибкой (код возврата 2), в то время как казнь 'мерзавца фиксирует-m 'сообщение'

Используя псевдоним может быть экономящий время

alias myDir = "cd /this/is/a/long/directory; pwd"
6
задан tshepang 24 October 2013 в 19:37
поделиться

2 ответа

Я смог диагностировать проблему, когда добавил в объявление capture = False:

local('git rm fabfile.py', capture=False)
local('git add settings.py', capture=False)

Это позволило отобразить ошибку более подробно.

Очевидно, разработчик Fabric будет чтобы вернуть поведение local к режиму отсутствия захвата по умолчанию в 1.0.

7
ответ дан 16 December 2019 в 21:41
поделиться

Это проблема, связанная с питоном, аналогичная описанной в этой ветке ?

Основная проблема заключается в том, что stdout / stderr захват выполняется для каждого запуска / sudo, а не для каждой задачи.

Было бы замечательно, если бы вы могли объяснить мне, как я могу собирать вывод и ошибку , изменив только файл с именем fabfile_runner.py .
В идеале сама задача фабрики могла бы быть неизменной, это позволило бы загрузить на фабрику тот же файл, который вы тестировали вручную.

Проверьте исходный код Fabric и загляните в папку «tests», а именно в tests / utils.py. Он содержит единственный декоратор, @mock_streams , который может оборачивать функцию (любую функцию в любом коде Python - это не зависит от Fabric, как я уже упоминал) и перенаправлять sys.stdout и / или sys.stderr для захвата / изучения.

Он предназначен для использования с функциями, будучи декоратором, поэтому вы можете использовать его напрямую, изменив свой fabfile_runner.py вот так:

fabfile_runner.py

from StringIO import StringIO
import sys
from test_fabfile import hello_world

def execute(task):
    output = StringIO()
    error = StringIO()
    sys.stdout = output
    sys.stderr = error
    task()
    sys.stdout = sys.__stdout__
    sys.stderr = sys.__stderr__
    return (output.getvalue(), error.getvalue())

output, error = execute(hello_world)
print "output : %s" %output
print "error : %s" %error
1
ответ дан 16 December 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: