【问题标题】:Output of typer command is not visible in terminaltyper 命令的输出在终端中不可见
【发布时间】:2023-02-07 02:06:07
【问题描述】:

我正在尝试在 python 中使用 Typer 包。

我写了这段代码:

import typer


app = typer.Typer()


@app.command()
def hello(name: str):
    print(f"Hello {name}")

我正在尝试使用以下命令运行它:

python main.py hello Patryk

我的终端没有显示任何东西。没有错误,没有文本。

Python 版本:Python 3.9.13 (pipenv) 系统:Macos Ventura 13.1 终端:iTerm2 Build 3.4.18 和 Macos 默认终端

我试图不使用 pipenv 并在我的机器上安装所有打字机。

我也试过这段代码:

import typer


def main(name: str):
    print(f"Hello {name}")


if __name__ == "__main__":
    typer.run(main)

当我用这个命令运行它时它起作用了:

python main.py

【问题讨论】:

    标签: python command-line-interface pipenv typer


    【解决方案1】:

    我找到了解决方案。要使其工作,您需要添加:

    if __name__ == "__main__":
        app()
    

    并且至少有 2 个命令,因此您的代码必须如下所示:

    import typer
    
    
    app = typer.Typer()
    
    
    @app.command()
    def hello(name: str):
        print(f"Hello {name}")
    
    
    @app.command()
    def goodbye(name: str):
        print(f"Goodbye {name}")
    
    
    if __name__ == "__main__":
        app()
    

    【讨论】:

    • 您不必至少给出两个命令。
    【解决方案2】:

    你只是忘了在下面添加这个:

    if __name__ == "__main__":
        app()
    

    然后像这样启动应用程序:

    python main.py Patryk
    

    因为 Typer 已经将 hello() 定义为程序执行时的默认操作。所以这种情况下就不用在前面加hello了。

    除非您另外添加其他命令,否则您将必须指定要在运行时运行的命令:

    python main.py <command-name> ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      相关资源
      最近更新 更多