如何使用 Python 和 Bokeh 加载 GOOGLE_API_KEY

How to load GOOGLE_API_KEY with Python and Bokeh

我正在尝试通过下面所示的 Bokeh 网站上的示例自学使用 Bokeh,

Bokeh Tutorial

我写了下面的代码;

import os
from bokeh.models import GMapOptions
from bokeh.plotting import gmap

map_options = GMapOptions(lat=30.2861, lng=-97.7394, map_type="roadmap", zoom=11)

# Replace the value below with your personal API key:
api_key = os.environ["GOOGLE_API_KEY"]

p = gmap(api_key, map_options, title="Austin")

data = dict(lat=[ 30.29,  30.20,  30.29],
            lon=[-97.70, -97.74, -97.78])

p.circle(x="lon", y="lat", size=15, fill_color="blue", fill_alpha=0.8, source=data)

show(p)

但是,当我 运行 脚本失败并出现以下错误时

Traceback (most recent call last):
  File "/Users/jonwebb/Desktop/Tests/property/properties.py", line 71, in <module>
    api_key = os.environ["GOOGLE_API_KEY"]
  File "/usr/local/Cellar/python@3.9/3.9.1_2/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'GOOGLE_API_KEY'

这个例子直接来自 Bokeh 教程,所以它应该可以工作。有谁知道这个问题的原因吗?

您可以替换

api_key = os.environ["GOOGLE_API_KEY"]

api_key = "YOUR_API_KEY"

"YOUR_API_KEY" 应替换为您实际的 API 密钥。您还可以将环境变量 GOOGLE_API_KEY 设置为您的 API 密钥。

os.environ 是 Python 标准库机制来访问 OS 环境变量。因此,要按原样使用上面的代码,请设置 GOOGLE_API_KEY 环境变量(这因 OS 和 shell 而异,您必须根据自己的情况查找具体信息)。

但还要注意,Bokeh 中的任何内容都不需要您以这种方式做事。本示例使用环境变量,因为它很方便。但最终,Bokeh 只关心将 API 键字符串作为参数传递给 gmap 函数。如何获取字符串取决于你,如果你不想使用环境变量,你可以从文件中读取它,或者在脚本中对其进行硬编码(但如果你这样做,请避免将其签入修订控制这个)。

您可以使用 python-dotenv 并在项目的根目录上创建一个 .env 文件,加载环境并使用 os.getenv('env_name')

import os
from dotenv import load_dotenv, find_dotenv
load_dotenv(find_dotenv())
os.getenv('GOOGLE_API_KEY')

在您的 .env 文件中:

GOOGLE_API_KEY=something-goes-here

检查 lib here