运行Python代码报NameError: name 'bls' is not defined怎么办
错误产生原因
抛出NameError: name 'bls' is not defined的本质是:当前Python执行环境的作用域中,不存在名为bls的可用对象。
哪怕之前同个notebook里取其他数据集的逻辑能正常跑,触发这个错误的常见场景只有三类:
- 重启过Jupyter/IPython内核、清空过所有变量状态后,直接跳转到当前单元格运行,之前负责导入BLS相关库、初始化
bls客户端的代码单元格没有在当前会话中执行 - 导入、初始化
bls对象的代码本身存在拼写错误、依赖缺失问题,bls变量从一开始就没被成功创建 - 单元格运行顺序错乱,调用
bls.get_series()的单元格,比导入、初始化bls的单元格先执行
修复方案
按以下步骤操作即可解决:
- 先确认依赖已安装,在终端执行安装命令:
pip install pandas bls - 在你写的拉取工资数据的代码最开头,补上pandas和bls的导入语句,确保
bls对象在被调用前已经完成初始化,补全后的完整可运行代码如下:
import pandas as pd import bls wages = bls.get_series('CIU2020000000000A') wages.to_csv('bls_wages_data_csv') df = pd.read_csv('bls_wages_data_csv') df.columns = ['Date', 'Wages'] df.head()
- 运行时按照notebook单元格从上到下的顺序逐格执行,不要跳步,避免出现变量还没定义就被调用的问题。
如果你用的不是公开的
bls第三方库,是自己封装的BLS API请求客户端,只要把初始化bls客户端的代码移动到调用get_series方法的代码之前运行即可。
内容的提问来源于stack exchange,提问作者user19266894
相关产品推荐
相关产品推荐

