2017-07-16 107 views
2

我正在開發一些我打算在我的LAB中使用的腳本。目前,我只在本地工作站(開發工作站)安裝了Python和所有必需的模塊。運行python腳本的最佳做法是什麼?

我希望能夠運行我通過每個LAB工作站開發的腳本。

這樣做的最佳做法是什麼?

我需要在所有工作站中安裝除當然IDE之外的相同環境嗎?如果是的話,那麼推薦的方法是什麼?

順便說一下,它主要是推薦從命令行屏幕(Windows)運行這些腳本還是有其他任何優雅的方式來做到這一點?

+0

這些是你通常會用'python'命令運行的腳本嗎?有多少臺電腦需要這種設置?什麼操作系統? – Grimmy

+0

你會如何想象自己運行它們?該信息可能非常有用,因爲我們不知道您的腳本是否是任何框架的一部分,或者它們是否是獨立腳本。 – Grimmy

+0

我至少還有3個電臺。所有這些都是Windows 7或10臺。他們目前是獨立的,但我已經可以看到他們將如何成爲py.test框架的一部分 –

回答

2

你應該打包這些腳本:

https://python-packaging.readthedocs.io/en/latest/

和使用包中定義的腳本的內置方法之一:

http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html?highlight=scripts

這將幫助你保持你的腳本。你可以對這個軟件包進行版本管理,因爲你會有錯誤(我們都寫錯誤),你會修復它們的一個新版本。而且,安裝/升級軟件包比管理幾個獨立的腳本要容易得多。

至於一些「最佳實踐」寫劇本的時候,我建議:

1)編寫單元測試代碼:http://python-guide-pt-br.readthedocs.io/en/latest/writing/tests/

2)不要把任何邏輯的__name__檢查下。如果有的話,只需將所有的邏輯封裝在一個名爲main的函數中,然後在__name__檢查下調用它。

if __name__ == '__main__': 
     foo = thing() 
     args = get_args() 
     try: 
      blah() 
     except DerpError: 
      handle_derp() 

if __name__ == '__main__': 
    main() 
+0

打包我的腳本只需要站點安裝Python。對 ? –

+0

不,您需要在所有機器上安裝Python。 您可以使用該軟件包來解析腳本中的任何相關模塊,並且如果這些機器可以訪問互聯網,它們將自動下載並安裝:http://python-packaging.readthedocs.io/en/latest /dependencies.html?highlight=requirements – willnx

0

如果你想運行在多臺計算機一個腳本沒有安裝Python隨處都可以「編譯」的腳本中使用到的.exe py2exe,cx_Freeze或PyInstall。 「編譯」實際上將Python和庫打包到生成的.exe或伴隨文件中。

但是,如果你打算運行很多Python腳本,你最好在任何地方安裝Python,並將腳本和庫作爲Python包(蛋或輪子)分發。

0

@moshe,如果您對所有這些機器擁有管理員權限,我建議安裝現在行業標準的Anaconda發行版python。它附帶Jupyter Notebook,這是一個用於編寫腳本,保存和共享代碼的寶貴工具,以及可視化數據等其他方便的工具。或者,您可以簡單地啓動一個Amazon AWS free tier Linux實例,以您想要的方式設置Python,然後在您的實驗室計算機上使用shell進入該實例。如果您使用共享機器,其他人可以安裝軟件並可能破壞您的環境設置,則這可能是首選的方法。

相關問題