Unix環境下開發python API的基本步驟
我正在為虛擬機開發 Unix 環境中的 API。大多數模組都是用python開發的。我對此有幾個問題。
我的文件副檔名為
abc.py
. 我想把它作為一個命令。例如,virtman dominfo [vmid]
應該是命令語法。現在我必須付出./virtman.py dominfo [vmid]
才能實現這一目標。我#!/usr/bin/python
在 python 文件中有第一行。那麼如何將其作為命令呢?我的 echo $PATH 看起來像 ‘/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin0’
我閱讀了很多文章,但沒有得到清晰的圖片,因此任何提示/建議都會有所幫助。
您似乎弄錯了,
abc.py
這不是命令。如果您可以執行它,那麼就是名稱中帶有一個點的名稱。在您可以執行的意義上執行./abc.py
,因此必須設置執行位。如果你必須比你做python abc.py
的,它不是一個命令(還)。通常,要使普通的 python 文件
abc.py
可執行,您應該確保第一行內容為:#!/usr/bin/env python
(這假設您有
/usr/bin/env
一個程序,並且會找到python
可能在 中的命令/usr/local/bin
。它還假設您要執行預設值python
(通常是指向特定 python 版本的連結,例如python2.7
),您也可以使用python3
if可作為命令使用)。之後做
chmod +x abc.py mv abc.py abc
然後就可以執行了
./abc
。如果目前目錄在您的路徑中,或者如果您移動abc
到路徑中的目錄,您應該可以abc
從任何地方執行。¹然而,重命名和移動文件也有缺點:
- 你不能再這樣做了
from abc import SomeClass
,因為文件被重命名了- 如果文件處於修訂控制之下,它可能不再是
所以相反,我通常做的是創建一個新文件
/usr/local/bin/abc
,如下所示:#!/usr/bin/env python from abc import main main()
並在底部
abc.py
:def main(): doing the real stuff if __name__ == '__main__': main()
的目錄
abc.py
需要在 PATH 中 python 搜尋模組,但這種方式不必更改,並且可以被任何程序用作導入,並以python abc.py
.¹刪除命令名稱中的
mv
點是必要的,但不是真正必要的,./abc.py
如果您不重命名它,您可以呼叫它。