[英]Making a top level python module callable?
從命令行調用頂級python 包時是否可以執行操作?
例如,我當前的結構如下所示:
MyApp
| - subdir1
| - pyfile.py
| - pyfile.py
| - pyfile.py
| - subdir2
| - subsubdir1
| - pyfile.py
| - pyfile.py
- __init__
- other.py
我可以做所有正常的事情。 例如from MyApp.subdir1 import pyfile
。
但是,我想允許用戶從命令行通過其頂層名稱調用該應用程序,並使其執行某些操作
python MyApp [options]
而不是必須使用main()
函數將其范圍限定到特定模塊
python /path/to/MyApp/actions/somemodule.py [options]
這是可能嗎?
嘗試使用python -m MyApp [options]
,其中__init__.py
包含if __name__ == "__main__":
塊。
如果您想讓用戶更輕松地進行操作,請執行以下操作,以便setup.py
腳本安裝僅包含以下內容的命令(例如/usr/bin/MyApp
):
#!/bin/bash
python -m MyApp $@
這樣,他們甚至不必知道這是一個Python程序。 他們所要做的就是調用MyApp [options]
。
Setuptools甚至可以自動生成該文件,稱為“入口點”。 有關其工作方式的更多詳細信息,請參見此問題: 解釋Python入口點?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.