2012-01-04 5 views
0

Я запускаю nosetests по моему проекту с --with-snort для уведомлений Growl.Передача аргументов вызываемому сценарию

Проблема в том, что у меня есть некоторые файлы lib, которые я накладываю на путь, поэтому у меня есть собственный скрипт python по адресу bin/python.

У меня нет проблем с носом через мой bin/python, выполнив which nosetests и используя этот исполняемый файл - bin/python /usr/local/bin/nosetests. Но как мне передать флаги в nosetests? Любые флаги будут отправляться на bin/python.

+0

Можете ли вы привести пример команд, которые вы пробовали? Вы должны изменить свой вопрос, чтобы уточнить, что 'nosetests' сам записывается на python с помощью' #!/Usr/bin/python' и дает более подробную информацию о том, что вы пытаетесь сделать. Вы хотите использовать свою обычную обертку '#!' Python, чтобы передать args на python, и вы также хотите передать args самому nosetest? –

ответ

3

Что заставляет вас думать, что флаги будут идти до bin/python? Вы проверили это? Если я пишу простую программу, чтобы проверить это:

import sys 
print sys.argv[1:] 

Я получаю следующее Ouput из этих вызовов, например (при условии, я сохранил это в файле под названием test.py)

python test.py отпечатки []

python test.py 5 печатает ['5']

python -i test.py 5 печатает ['5'] (и затем передает управление интерпретатору из-за -i флаг).

Так флаги перед тем имя сценария передаются в Python, флаги после имя сценария передаются в сценарий. Таким образом, в вашем примере, просто использовать

bin/python /usr/local/bin/nosetests --with-snort 

Часть этого convered в Invoking the Interpreter в документации Python.

+0

Yup ... проблема заключалась в том, что 'subprocess.check_output' добавлял '\ n' в конец проверки' which nosetests'. Это привело к тому, что флаг переместился на новую строку и обрабатывался как новая команда. То же самое происходит с рубинами. Просто нужно было сделать «rstrip». –

Смежные вопросы