為什么80%的碼農都做不了架構師?>>> ??
今天我們很高興地宣布 Python Fire 開源。Python Fire 可從任何 Python 代碼生成命令行接口(command line interfaces (CLIs)),簡單地調用任意 Python 程序中的 Fire 函數以將那個程序自動地轉化為 CLI。該庫可通過 `pip install fire` 從 pypi 獲取,也可參考 Github 上的資源。
Python Fire 自動把你的代碼轉化成一個 CLI,而不需要你做任何額外工作。你不必定義參數、設置幫助信息或寫一個主函數定義代碼如何運行。相反地,你只需從主模塊調用 `Fire` 函數,Python Fire 會接管剩下的一切。它使用檢索將任何 Python 對象(無論是類、對象、字典、函數,甚至是整個模塊)轉化為命令行接口,并輸出標注標簽和文檔,并且指令行界面會隨著編碼的變化保持實時更新。
為了說明這一點,讓我們看一個簡單的例子。
#coding: utf-8import fireclass Example(object):def hello(self, name='world'):"""Says hello to the specified name."""return 'Hello {name}!'.format(name=name)def demo(self, key):return keydef main():fire.Fire(Example)if __name__ == '__main__': main()
執行:
?
$ python fire_demo.py hello Hello world! $ python fire_demo.py demo Fire trace: 1. Initial component 2. Instantiated class "Example" (fire_demo.py:5) 3. Accessed property "demo" (fire_demo.py:10) 4. ('The function received no value for the required argument:', 'key')Type: instancemethod String form: <bound method Example.demo of <__main__.Example object at 0x037C33D0>> File: fire_demo.py Line: 10Usage: fire_demo.py demo KEYfire_demo.py demo --key KEY$ python fire_demo.py demo test
?
當然你可以繼續像使用 Python 普通庫那樣使用這個模塊,從而你可以使用跟 Bash 和 Python 完全一樣的的代碼。如果你正在寫一個 python 庫,那么在試驗這個模塊的時候你就不需要更新你的主要方法(method)或客戶端。僅僅只需要以命令行的方式運行一部分你正在試驗的庫。即使這些庫改變了,該命令行工具仍然保持更新。
在 Google,工程師們使用 Python Fire 從 python 庫生成命令行工具。因為我們有使用 Python 圖像庫(Python Imaging Library/PIL)和 Fire 建立的圖像處理工具。在谷歌大腦,我們使用由 Fire 構建的實驗管理工具,該工具能夠和 Python 或 Bash 同等程度地管理實驗。
每個 Fire CLI 都帶有交互模式。運行 CLI 時使用「-interactive」旗標和命令行以及其他已定義的變量來登錄 IPython REPL。請務必查看 Python Fire 的文檔,從而了解 Fire 更多實用的特征。
因為 Python Fire 十分簡單、普遍和強大,我希望能為你的項目提供一個十分有效的庫。
?