python 输入命令的输出在终端中不可见

j13ufse2  于 2023-02-07  发布在  Python
关注(0)|答案(2)|浏览(192)

我正在尝试在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内部版本3.4.18和Macos默认终端
我试着不使用pipenv,并在我的机器上安装所有的typer。
我也试过这段代码:

import typer

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

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

当我用下面的命令运行它时,它就工作了:

python main.py
odopli94

odopli941#

我找到了解决办法。要使它工作,你需要添加:

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()
yb3bgrhw

yb3bgrhw2#

您只是忘记在下面添加此内容:

if __name__ == "__main__":
    app()

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

python main.py Patryk

因为Typer已经定义了hello()作为程序执行时的默认动作,所以在这种情况下不需要在前面添加hello。
除非另外添加其他命令,否则必须指定要在运行时运行的命令:

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

相关问题