python - 使顶级 python 模块可调用?

标签 python

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

例如,我当前的结构如下所示:

MyApp 
    | - subdir1 
        | - pyfile.py
        | - pyfile.py
        | - pyfile.py
    | - subdir2
        | - subsubdir1
            | - pyfile.py
            | - pyfile.py
    - __init__ 
    - other.py 

我可以做所有正常的事情。例如从 MyApp.subdir1 导入 pyfile

但是,我希望允许用户通过命令行的顶级名称调用应用程序并让它执行某些操作

python MyApp [options]

他们不必将其范围限制到具有 main() 函数的特定模块

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

这有可能吗?

最佳答案

尝试python -m MyApp [options] ,您的__init__.py在哪里包含 if __name__ == "__main__": block 。

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

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

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

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

关于python - 使顶级 python 模块可调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29449503/

相关文章:

python - 在 Pandas 中垂直和水平堆叠数据帧

python - 使用python下载大文件的最佳方法

python - 如何在渲染后将数据插入模板? ( Django )

python - 计算点间距不均匀的 3D 梯度

python - Django - 创建多个文件的 Zip 并使其可下载

python - 无法接收来自 Steam 和其他一些程序的击键

java - 使用 Processbuilder 从 Java Web 应用程序调用 Python 脚本

python - 使用更少的代码行是否更 pythonic?

python - "if not x"和 "if x is None"之间有区别吗?

python - 从 Python docx 中的 .docx (Word) 文件中读取标题