🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant 平台 get_index_stocks 函数未定义 (NameError) 错误排查与解决方法

joinquant | 发布时间: 2026/6/24
以下内容由 EasyQuant 生成。

问题描述

求助,get_index_stock错误

这个错误困扰3周了,
NameError: name 'get_index_stocks' is not defined
但是在代码开头,已经做了引用from jqdata import *
为什么还是会报这个错呢?

代码是:
stocks = get_index_stocks(index_code,date=da)

解决方案

遇到 NameError: name 'get_index_stocks' is not defined 这个错误,通常是因为运行环境不匹配或者导入方式错误导致的。请按照以下几种情况进行排查:

1. 您是否在“本地电脑”上运行代码?(最常见原因)

如果您是在本地的 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)

2. 您是否在“聚宽官网”运行代码?

如果您是在聚宽官网的回测环境研究环境中运行,get_index_stocks 是全局内置函数,通常不需要额外导入,或者使用 from jqdata import * 也是完全可以的。

如果依然报错,请检查以下几点:

  • 拼写检查:请注意您提问的标题写的是 get_index_stock(少了一个 s),而正文代码是 get_index_stocks。请仔细检查您的实际代码中是否漏掉了末尾的 s
  • 变量覆盖:检查您的代码中是否在某处不小心将 get_index_stocks 赋值为了其他变量(例如 get_index_stocks = ...),导致函数被覆盖。
  • 自定义库冲突:如果您在研究环境中自己写了 .py 文件并 import *,检查自定义文件中是否有同名变量冲突。

3. 检查日期参数格式

虽然这不会导致 NameError,但为了确保函数正常运行,请确保传入的 da 参数格式正确。date 参数应该是一个字符串(如 '2023-10-15')或者 datetime.date / datetime.datetime 对象。

总结:90% 以上出现这个报错的情况,是因为用户在本地环境使用了官网的 jqdata 模块。请改用 jqdatasdk 并进行 auth 登录即可解决。