2013-04-29 22 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 2013-04-29 16:33:16

回答

0

新的答案

通過它的外觀,setuptools假定所有的選項與--開始,所有的命令不--開始,所以沒有分隔命令明確的方式,因爲這是沒有必要的。

如果自定義nosetests命令接受lint作爲一個選項,那麼它在該命令,一個錯誤,這應該忽略任何不與--開始。

然而,有可能解決使用--來指示選項的結束的傳統的Unix成語的bug,所以下面可能工作...

$ 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 2013-04-29 15:01:54

+0

而「別名」命令的描述則是「定義調用一個或多個**命令的快捷方式」。所以應該允許多個命令。我想有一個運行幾個命令而不是bash腳本的別名。 – cladmi 2013-04-29 15:07:47

+0

@cladmi你可以在原始問題中包含你的'setup.py'的內容嗎? – Aya 2013-04-29 15:23:20

相關問題