2015-04-04 84 views
2

從命令行調用頂級python 時是否可以執行操作?使頂層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() func

python /path/to/MyApp/actions/somemodule.py [options] 

這是不是可能?

回答

4

嘗試python -m MyApp [options],其中您的__init__.py包含if __name__ == "__main__":塊。

如果你想,即使對於用戶更容易,讓您的setup.py腳本安裝命令讓它(例如/usr/bin/MyApp)只包含以下內容:

#!/bin/bash 
python -m MyApp [email protected] 

這樣的話,他們甚至不必須知道這是一個Python程序。他們所要做的就是撥打MyApp [options]

Setuptools甚至可以自動生成它,它被稱爲「入口點」。有關它們如何工作的更多詳細信息,請參閱此問題:Explain Python entry points?