问题描述
请问有人遇到过这个错么,python是2.7版本,pandas是0.18.0,求助求助~~
get_all_securities(['fund'])
auth(config.username, config.password)
auth success
Traceback (most recent call last):
File "/Users/zlz/PycharmProjects/quant/testjq.py", line 12, in < module>
df = getall_securities(['fund'])[:2]
File "/Library/Python/2.7/site-packages/jqdatasdk/utils.py", line 230, in _wrapper
return func(args, **kwargs)
File "/Library/Python/2.7/site-packages/jqdatasdk/utils.py", line 266, in hashable_cached_func
return copy.deepcopy(cached_func(_args, **_kwargs))
File "/Library/Python/2.7/site-packages/fastcache/__init.py", line 67, in wrapper
return _cached_func(args, *kwargs)
File "/Library/Python/2.7/site-packages/jqdatasdk/utils.py", line 249, in func_with_serialized_params
_kwargs = {k: deserialize(v) for k, v in six.viewitems(kwargs)}
AttributeError: 'module' object has no attribute 'viewitems'
解决方案
这个问题通常是因为 Python 环境中的 six 库版本过低导致的。\n\n### 报错原因分析\n报错信息 AttributeError: 'module' object has no attribute 'viewitems' 表明 jqdatasdk 在调用 six.viewitems() 时找不到该方法。six 是一个用于兼容 Python 2 和 Python 3 的基础依赖库,较老版本的 six 库中并没有包含 viewitems 这个属性。\n\n### 解决方法\n\n#### 1. 升级 six 库(推荐)\n打开您的终端或命令行工具,运行以下命令将 six 库升级到最新版本:\npip install --upgrade six\n升级完成后,重新运行您的代码即可。\n\n#### 2. 升级 jqdatasdk\n有时候依赖冲突可以通过直接升级 SDK 来解决,确保您使用的是最新版的 JQDataSDK:\npip install --upgrade jqdatasdk\n\n#### 3. 强烈建议:迁移至 Python 3 环境\n您目前使用的是 Python 2.7 和 pandas 0.18.0。需要注意的是:\n* Python 2.7 官方已于 2020 年停止维护。\n* 聚宽(JoinQuant)的回测引擎及 JQDataSDK 的最新功能主要针对 Python 3(特别是 Python 3.6+)进行优化和更新。\n* 较新的数据处理库(如 pandas, numpy)也早已放弃对 Python 2 的支持。\n\n为了避免未来在量化投研中遇到更多底层依赖报错,建议您尽快将开发环境升级至 Python 3.6 或以上版本,并搭配较新的 pandas 版本。