Сбой команды sh в python - PullRequest
0 голосов
/ 06 мая 2011

Я новичок в питоне.Я получил эти сценарии от поставщика IP.

cmd = "sh compile_regression_vcs.sh"

try:
    self.agent.run_commands(cmd, pwd=self.agent.test_dir, extra_env=env)
except TestException as e:
    s = traceback.format_exc()
    serr = "there were errors:\n%s\n" % (s)
    self.logger.info(serr)
    raise TestException("Could not compile RTL")
except IOError as e:
    raise TestException("Could not compile RTL: %s" % str(e))

вывод выглядит следующим образом:

TestException: command 'sh' generated 2 errors, aborting.

Когда я запускаю команду sh отдельно без python, я не получаю никаких ошибок.Я не понимаю, почему Python дает исключение

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

В основном проблема может быть связана с вашей оболочкой и вашим сценарием оболочки.Также может случиться так, что среда, в которой вы работаете в вашей оболочке, может отличаться от среды, которую вы используете в своем скрипте Python.Проверьте это: extra_env = env

Если вы по-прежнему не можете сосредоточиться на проблеме, вы можете продолжить отладку со следующими параметрами:

Возможно, вы захотите использовать некоторую отладку в вашем скрипте, чтобы увидеть точнуюошибка.Использование sys.exc_info () было бы хорошим вариантом для просмотра деталей стека.

вы можете использовать этот фрагмент кода в своем блоке исключений:

import sys
tb = sys.exc_info()[2]
    lst = format_list(extract_stack())
    for l in lst: print l,

или вы можете просто использовать:

import traceback
traceback.print_exc()

намного чище:)

См .: traceback , sys

Вы также можете запустить отладчик Python дляотладка run_commands выполняется как ожидалось.Просто поместите эти строки кода в свой блок try, и вы попадете в режим интерактивного отладчика Python.

try:
    import pdb
    pdb.set_trace()
    self.agent.run_commands(cmd, pwd=self.agent.test_dir, extra_env=env)

, вы можете позже ввести help в режиме отладчика python, чтобы увидеть все доступные опции.См .: pdb

Вы также можете использовать модуль проверки: модуль проверки

2 голосов
/ 06 мая 2011

Попробуйте вместо этого:

/bin/sh compile_regression_vcs.sh

Находится ли compile_regression_vcs.sh в текущем каталоге?

...