Python 点击模块没有输出?
No output from the Python click module?
我试图在 click
上关注 this tutorial from Dan Bader,但由于某种原因,那里的代码在命令行中无法使用 $ python cli.py 'London'
,不幸的是 returns 没有错误,所以很难调查这里发生了什么。
然而,current_weather()
函数在 Spyder IDE 中的作用就像一个魅力,所以首先我怀疑 Python Anaconda 版本和 click
模块之间存在兼容性问题,所以我完全卸载 Anaconda,我现在 运行 在 Python 3.6.7 for Ubuntu.
但我仍然无法使其在 CLI 中工作,并且 returns 没有错误。我在这里做错了什么?
import click
import requests
SAMPLE_API_KEY = 'b1b15e88fa797225412429c1c50c122a1'
@click.command()
@click.argument('location')
def main(location, api_key):
weather = current_weather(location)
print(f"The weather in {location} right now: {weather}.")
def current_weather(location, api_key=SAMPLE_API_KEY):
url = 'http://samples.openweathermap.org/data/2.5/weather'
query_params = {
'q': location,
'appid': api_key,
}
response = requests.get(url, params=query_params)
return response.json()['weather'][0]['description']
在 CLI 中:
$ python cli.py
$
$ python cli.py 'London'
$
在 Spyder 中 IDE:
In [1109]: location = 'London'
In [1110]: current_weather(location)
Out[1110]: 'light intensity drizzle'
与pdb
源代码调试器一起使用时,pdb自动进入post-mortem debugging,即程序异常退出。但是没有报错...
$ python -m pdb cli.py 'London'
> /home/project/cli.py(2)<module>()
-> import click
(Pdb)
我安装了 click-7.0
并且 Python 3.6.7 (default, Oct 22 2018, 11:32:17)
您需要致电main()
:
if __name__ == '__main__':
main()
完整示例:
import click
@click.command()
@click.argument('location')
def main(location):
weather = current_weather(location)
print(f"The weather in {location} right now: {weather}.")
def current_weather(location):
return "Sunny"
if __name__ == '__main__':
main()
使用设置工具
或者您可以使用 setup tools,然后以这种方式调用 main
:
调试中:
我强烈推荐 PyCharm 作为 Python IDE。它可以使这类工作变得更加容易。
我试图在 click
上关注 this tutorial from Dan Bader,但由于某种原因,那里的代码在命令行中无法使用 $ python cli.py 'London'
,不幸的是 returns 没有错误,所以很难调查这里发生了什么。
然而,current_weather()
函数在 Spyder IDE 中的作用就像一个魅力,所以首先我怀疑 Python Anaconda 版本和 click
模块之间存在兼容性问题,所以我完全卸载 Anaconda,我现在 运行 在 Python 3.6.7 for Ubuntu.
但我仍然无法使其在 CLI 中工作,并且 returns 没有错误。我在这里做错了什么?
import click
import requests
SAMPLE_API_KEY = 'b1b15e88fa797225412429c1c50c122a1'
@click.command()
@click.argument('location')
def main(location, api_key):
weather = current_weather(location)
print(f"The weather in {location} right now: {weather}.")
def current_weather(location, api_key=SAMPLE_API_KEY):
url = 'http://samples.openweathermap.org/data/2.5/weather'
query_params = {
'q': location,
'appid': api_key,
}
response = requests.get(url, params=query_params)
return response.json()['weather'][0]['description']
在 CLI 中:
$ python cli.py
$
$ python cli.py 'London'
$
在 Spyder 中 IDE:
In [1109]: location = 'London'
In [1110]: current_weather(location)
Out[1110]: 'light intensity drizzle'
与pdb
源代码调试器一起使用时,pdb自动进入post-mortem debugging,即程序异常退出。但是没有报错...
$ python -m pdb cli.py 'London'
> /home/project/cli.py(2)<module>()
-> import click
(Pdb)
我安装了 click-7.0
并且 Python 3.6.7 (default, Oct 22 2018, 11:32:17)
您需要致电main()
:
if __name__ == '__main__':
main()
完整示例:
import click
@click.command()
@click.argument('location')
def main(location):
weather = current_weather(location)
print(f"The weather in {location} right now: {weather}.")
def current_weather(location):
return "Sunny"
if __name__ == '__main__':
main()
使用设置工具
或者您可以使用 setup tools,然后以这种方式调用 main
:
调试中:
我强烈推荐 PyCharm 作为 Python IDE。它可以使这类工作变得更加容易。