2013-04-29 3 views
0

Я хотел бы написать псевдоним в файле setup.py нескольким командам тестов для моего проекта.Setuptools, явно разделяет несколько вызовов команд в одной строке

Но у меня проблемы, когда я пытаюсь запустить несколько команд в одной строке, когда команда «nosetests» вызывается перед другими командами.

Это работает

$ python setup.py lint nosetests 
pylint output 
nosetests output 

Но если поменять команды, я только получает nosetests выход.

Я думаю, что команда lint съедена парсером аргументов nosetests.

$ python setup.py nosetests lint 
nosetests output 
# No pylint output 

Итак, я хотел бы знать, есть ли способ явно отделить команды?

Благодаря

+0

Чтобы сохранить ваш 'setup.py' более декларативный; вы можете отключить императивные задачи до ['paver'] (http://paver.github.io/paver/) и/или [' fabric'] (http://fabfile.org). – jfs

ответ

0

Новый ответ

Судя по всему, setuptools предполагает, что все варианты начинаются с -- и все команды не начинаются с --, так что нет никакого явного способа разделения команд, потому что это не нужно.

Если команда пользовательских nosetests принимает lint как вариант, то это ошибка в этой команде, которая должна игнорировать все, что не начинается с --.

Однако, можно было бы обойти баг с традиционной Unix идиомы использования -- для обозначения конца опций, так что следующее может работать ...

$ python setup.py nosetests -- lint 

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

Старый ответ

От the docs ...

Основное использование setup.py является:

$ python setup.py <some_command> <options>

... так это звучит, как тот факт, что он выполнил обе команды в вашем первом примере: ошибка или случайность.

Это, вероятно, безопаснее запускать их как две отдельные команды ...

$ python setup.py nosetests && python setup.py lint 
nosetests output 
pylint output 
+0

Если вы посмотрите на результат 'python setup.py --help-commands' в документации, строка 'usage' говорит: ' usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...] ' – cladmi

+0

И описание команд 'alias' говорит' define shortcut для вызова одной ** или более ** команд'. Поэтому допускается использование нескольких команд. Я хотел бы иметь псевдоним, который запускает несколько команд вместо сценария bash. – cladmi

+0

@cladmi Можете ли вы включить содержимое своего 'setup.py' в исходный вопрос? – Aya

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