簡體   English   中英

使頂級python模塊可調用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM