3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
遇到 NameError: name 'get_index_stocks' is not defined 这个错误,通常是因为运行环境不匹配或者导入方式错误导致的。请按照以下几种情况进行排查:
如果您是在本地的 Python 环境(如 PyCharm、VSCode、本地 Jupyter Notebook)中运行代码,直接使用 from jqdata import * 是无效的。jqdata 是聚宽官网环境特有的模块。
解决方法:在本地环境中,您需要使用聚宽的本地数据接口 JQData (jqdatasdk)。
正确的本地代码写法:
# 1. 安装 jqdatasdk (如果还没安装,在命令行运行: pip install jqdatasdk)
from jqdatasdk import *
# 2. 登录您的聚宽账号
auth('您的聚宽账号', '您的聚宽密码')
# 3. 调用函数
index_code = '000300.XSHG'
da = '2023-01-01'
stocks = get_index_stocks(index_code, date=da)
print(stocks)
如果您是在聚宽官网的回测环境或研究环境中运行,get_index_stocks 是全局内置函数,通常不需要额外导入,或者使用 from jqdata import * 也是完全可以的。
如果依然报错,请检查以下几点:
get_index_stock(少了一个 s),而正文代码是 get_index_stocks。请仔细检查您的实际代码中是否漏掉了末尾的 s。get_index_stocks 赋值为了其他变量(例如 get_index_stocks = ...),导致函数被覆盖。.py 文件并 import *,检查自定义文件中是否有同名变量冲突。虽然这不会导致 NameError,但为了确保函数正常运行,请确保传入的 da 参数格式正确。date 参数应该是一个字符串(如 '2023-10-15')或者 datetime.date / datetime.datetime 对象。
总结:90% 以上出现这个报错的情况,是因为用户在本地环境使用了官网的 jqdata 模块。请改用 jqdatasdk 并进行 auth 登录即可解决。