【问题标题】:Making a top level python module callable?使顶级python模块可调用?
【发布时间】:2015-06-09 13:34:33
【问题描述】:

从命令行调用顶级 python package 时是否可以执行操作?

例如,我目前的结构是这样的:

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]

这有可能吗?

【问题讨论】:

    标签: python


    【解决方案1】:

    试试python -m MyApp [options],您的__init__.py 包含一个if __name__ == "__main__": 块。

    如果您想让用户更轻松,请让您的 setup.py 脚本安装一个仅包含以下内容的命令(例如 /usr/bin/MyApp):

    #!/bin/bash
    python -m MyApp $@
    

    这样,他们甚至不必知道这是一个 Python 程序。他们所要做的就是致电MyApp [options]

    Setuptools 甚至可以自动生成它,它被称为“入口点”。有关它们如何工作的更多详细信息,请参阅此问题:Explain Python entry points?

    【讨论】:

      猜你喜欢
      • 2021-02-05
      • 2016-04-06
      • 2017-07-24
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-01
      • 1970-01-01
      相关资源
      最近更新 更多