网上365平台被黑提款-365外网足球-365体育平台网址

365外网足球

【有用功】常见报错或者警告解决方法

2025-10-28 22:15:33 作者 admin 阅读 4198
【有用功】常见报错或者警告解决方法

返回主题列表

【有用功】常见报错或者警告解决方法

JoinQuant技术支持 发布于2019-04-02

回复 10

浏览 8660

35

listen

分享到:

微信

微博

雪球

# 1 概述

Hello,大家好,我们准备收集并整理常见问题,并在此做出解释。

大家有问题,可以在下面跟帖,我们答复并整理。

感谢您的参与。

温馨提示:

- 大多数的异常或者报错,大家复制下报错代码的最后一行,在网上搜下原因或者解决方法就可以解决了;

- 回测或者模拟交易中的报错,可以在报错代码中找到**“user_code.py”**,然后再看下对应的报错在您代码中哪行,**重点关注下最后一行报错提示**,也可以直接将最后一行报错复制到网上搜下解决方法;

- 结合上面这两个方法,您可以解决大多数的问题,若还有问题的话,欢迎在[聚宽社区发帖提问](https://www.joinquant.com/view/community/edit?postType=ask),详细描述下您的问题,并附上对应的回测(或者测试代码)、结果截图以及预期结果,我们核查下答复您

![Img]( https://image.joinquant.com/6df90c320dadeb883ef0eaf571821149)

# 2 正文

## 2.1 Python使用过程的报错

### Python标准异常

(1)BaseException 所有异常的基类

(2)SystemExit 解释器请求退出

(3)KeyboardInterrupt 用户中断执行(通常是输入^C)

(4)Exception 常规错误的基类

(5)StopIteration 迭代器没有更多的值

(6)GeneratorExit 生成器(generator)发生异常来通知退出

(7)StandardError 所有的内建标准异常的基类

(8)ArithmeticError 所有数值计算错误的基类

(9)FloatingPointError 浮点计算错误

(10)OverflowError 数值运算超出最大限制

(11)ZeroDivisionError 除(或取模)零 (所有数据类型)

(12)AssertionError 断言语句失败

(13)AttributeError 对象没有这个属性

(14)EOFError 没有内建输入,到达EOF 标记

(15)EnvironmentError 操作系统错误的基类

(16)IOError 输入/输出操作失败

(17)OSError 操作系统错误

(18)WindowsError 系统调用失败

(19)ImportError 导入模块/对象失败

(20)LookupError 无效数据查询的基类

(21)IndexError 序列中没有此索引(index)

(22)KeyError 映射中没有这个键

(23)MemoryError 内存溢出错误(对于Python 解释器不是致命的)

(24)NameError 未声明/初始化对象 (没有属性)

(25)UnboundLocalError 访问未初始化的本地变量

(26)ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象

(27)RuntimeError 一般的运行时错误

(28)NotImplementedError 尚未实现的方法

(29)SyntaxError Python 语法错误

(30)IndentationError 缩进错误

(31)TabError Tab 和空格混用

(32)SystemError 一般的解释器系统错误

(33)TypeError 对类型无效的操作

(34)ValueError 传入无效的参数

(35)UnicodeError Unicode 相关的错误

(36)UnicodeDecodeError Unicode 解码时的错误

(36)UnicodeEncodeError Unicode 编码时错误

(37)UnicodeTranslateError Unicode 转换时错误

(38)Warning 警告的基类

(39)DeprecationWarning 关于被弃用的特征的警告

(40)FutureWarning 关于构造将来语义会有改变的警告

(41)OverflowWarning 旧的关于自动提升为长整型(long)的警告

(42)PendingDeprecationWarning 关于特性将会被废弃的警告

(43)RuntimeWarning 可疑的运行时行为(runtime behavior)的警告

(44)SyntaxWarning 可疑的语法的警告

(45)UserWarning 用户代码生成的警告

以上内容参考网页:http://www.runoob.com/python/python-exceptions.html

### IndentationError: unexpected indent

缩进错误

## 2.2 回测或者模拟交易中出现的警告

### SecurityNotExist,Exception:找不到标的xxx

输入的股票代码不对,或者后缀不对

### NameError: global name 'xxx' is not defined

原因:(1)局部变量写错了;(2)未在初始化中定义全局变量(g.*);

解决方法:查看报错user_code.py中报错信息的行数,有没有写错或者在全局变量中定义

### xxx在position中不存在,为了保持兼容...

![Img]( https://image.joinquant.com/16655cb5bbd1fca33b0d0b881e6bc086)

https://www.joinquant.com/post/13861

### 为什么我的代码运行没结果

(1)您要运行策略,点击编译运行或者运行回测,在研究中可以通过点击工具栏中的运行按钮运行;

(2)您的程序要有输出内容,例如使用log.info或者print输出。

### OperationalError: (_mysql_exceptions.OperationalError) (2003, "Can't connect to MySQL server on '10.45.145.137' (110)")

原因:连接MySQL数据库失败

解决方法:您再次运行下,一次不要查询大量的数据。

### ImportError: 导入'xxx'模块失败: read_file xxx.so: 文件'/opt/research-files/xxx/xxx/xxx.so'不存在

https://www.joinquant.com/post/10432?tag=algorithm

### WARNING xxx joblib will operate in serial mode warings.warn xxx

![Img]( https://image.joinquant.com/8d74f94e891558863952bea18c13e8d5)

是因为加大了安全粒度,无法使用多进程/多线程模式,只能使用单线程

(1)为了安全,请不要使用多线程或者多线程;

(2)如果没使用的话,请忽略,这个只是警告,不影响程序的正常运行。

### TimeoutError:function 'market_open' runs more than 1800 seconds

![Img]( https://image.joinquant.com/c7e0b2515810c067a7a3655e48141517)

(1)我们引擎目前是限制1800秒内跑完,超过就关闭了;

(2)您可以结合性能分析enable_profile优化下策略,性能分析API的链接如下:

https://www.joinquant.com/help/api/help?name=api#其他函数

(3)可以将运行时间长的函数分解到不同时间段运行;

(4)还可以通过gc处理,具体方法参考下面的帖子:

https://www.joinquant.com/post/11641?tag=algorithm

(5)可以在客户端使用,没有这个限制;

### 进程占用内存过大(3.2 GB), 被强制杀掉

![Img]( https://image.joinquant.com/f59497e88501c0562829f3898b318c4e)

您的策略占用内存太大了,超过了3G,

(1)可以参考下面的帖子,测试并优化下:

https://www.joinquant.com/view/community/detail/626dead5fd0ee29bb38961aa6a8b7b39?type=2

(2)或者使用disable_cache()关闭内存

![Img]( https://image.joinquant.com/688403b181712d9853c43a85827bd7a8)

(3)在客户端使用,没有内存限制

### XXX.so不存在

![Img]( https://image.joinquant.com/796b5536a4ba53217ba24f3b9fb5dc1f)

## 2.3 客户端经常报的Bug

### IOEeeor:[Errno 2] No such file or directory: u'*\JoinQUant-Desktop\USERDATA\.joinquant\bundle\stockId\*\meta

客户端没有下载数据

## 2.4 pandas使用过程的报错

### IndexError: list index out of range,IndexError:index out of bounds

原因:获取List中不存在的索引的值

解决方法:首先找到user_code.py中错误所在行;在程序中加入判断list的长度。

### AttributeError:'DataFrame' object has no attribute 'sort',

### AttributeError: 'DataFrame' object has no attribute 'sort_value'

dataframe类型没有sort_value这个方法,dataframe类型没有sort_value这个方法

原因:不同版本Pandas的排序方法不同。

解决方法:您可以查看下您使用环境中Pandas的版本,并使用对应的排序方法。具体使用方法请参考Pandas的教程。

一般的,早期版本的排序方法是sort,新版本的排序方法为sort_values。

sort的使用方法:http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.sort.html

sort_values的使用方法:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_values.html

ascending=False为降序排列,即最大值在最前面;默认为升序排列

早期版本的排序

year_pct_sum_sort = years_pct_sum[year].order(ascending=False)

data.sort('change_pct', ascending=False)

新版本的排序

year_pct_sum_sort = years_pct_sum[year].sort_values(ascending=False)

data.sort_values(by='date')

### 提示pandas没有stats方法

一般报错内容如下

```

from pandas.stats.api import ols

ModuleNotFoundError: No module named 'pandas.stats'

```

产生的原因:在pandas0.18前的版本有stats方法,之后版本取消了这个方法。

解决方法:

(1)使用statsmodels的ols方法,具体使用方法请查询statsmodels模块的使用方法;

(2)聚宽官网的python2回测环境中pandas目前是0.16版的,可以正常使用;

(3)自定义客户端pandas的版本,不过不推荐,pandas是个很重要的Python库,如果降低了pandas的版本,客户端可能打不开。

### pandas关于Panel将在后期版本取消的提示

```

DeprecationWarning: Panel is deprecated and will be removed in a future version. The recommended way to represent these types of 3-dimensional data are with a MultiIndex on a DataFrame, via the Panel.to_frame() method Alternatively, you can use the xarray package http://xarray.pydata.org/en/stable/. Pandas provides a `.to_xarray()` method to help automate this conversion.

```

可以忽略这个提示,不影响策略的正常运行;也可以添加下面的代码取消提示。

```

import warnings

warnings.filterwarnings("ignore")

```

## 更多教程

- [【有用功】教你如何调试程序(Debug)](https://www.joinquant.com/post/3341?tag=algorithm)

****

#### 为什么某个包明明有某个方法?但我调用就报错没有这个方法?

第三方库的版本不一样 , 使用哪个版本, 看对应版本的文档就可以了,比如pandas0.16中的排序应该使用sort , 而在pandas0.24中应该使用sort_values 。以下为pandas两个版本的文档地址 , 其他的第三方库可以通过 `pandas.show_versions()`查看其版本号。

- [pandas 0.23.4 文档地址](对应https://pandas.pydata.org/pandas-docs/version/0.23.4/whatsnew.html) (对应python3回测 , 研究python3内核和python2 pav内核)

- [pandas 0.16.2 文档地址](https://pandas.pydata.org/pandas-docs/version/0.23.4/whatsnew.html) (对应python2回测 , 研究python2内核)

#### 为什么对字典使用 keys()/values() 方法得到结果不是列表?

python2和python3存在差异 , python3字典的 keys/values 方法返回的是一个可迭代对象,可以直接转为list : list(dict.keys()) ;以下为python2和python3的常见差异 ,其他的异常可以百度看一下。

- Python3中严格区分byte与str。

- print从Python2中的关键字转变为了函数,意味着以下写法:

`print "hello world"`将在Python3中报错。

- `/`在Python2返回结果向下取整,在Python3中将直接返回结果不进行任何取舍,需要Python2中的行为时请使用`//`。**这个有可能导致Python2和Python3相同策略回测结果不同**

- 修改了一些语法。metaclass,raise、[map](https://docs.python.org/3/library/functions.html#map)、[filter](https://docs.python.org/3/library/functions.html#filter)以及dict的items/keys/values方法返回迭代对象而不是列表,描述符协议,[保存类属性定义顺序](https://www.python.org/dev/peps/pep-0520/),[存关键字参数顺序](https://www.python.org/dev/peps/pep-0468/)。

- 去掉了一些语法。cmp、< >(也就是!=)、xrange(其实就是range)、不再有经典类。

35

listen

分享到:

微信

微博

雪球

评论

所向披迷

index out of bounds 这是啥错

2020-02-12

linklist

我也经常遇到这个,不知道什么原因,没仔细研究

2020-02-12

Eleanor266

ImportError: 导入错误,未找到系统库或自定义库 ngboost

![Img]( https://image.joinquant.com/3d17de36ddd5a62b0b052dfa4cc5d431)

2020-10-14

高耳机

![微信图片_20201014163045.png][1]

[1]: https://image.joinquant.com/4e824dc881b123a38c99475129ac962e

这个错误不知道该怎么解决

2020-10-14

JoinQuant技术支持

@高耳机 g.security

2020-10-20

JoinQuant技术支持

@Eleanor266 如果不是自己定义的模块的话,目前还不支持

2020-10-20

zayne

您好,请问客户端没有下载是怎么解决?我是在线上环境运行的啊。

2020-10-31

JoinQuant-Supercritical

@zayne 客户端已经下线了,回测及模拟在官网运行,下载数据到本地可以使用jqdatasdk

2020-11-01

tonylemon

你好,之前一直运行正常的一段代码,两三个月没运行了,今天突然提示错误。

错误如下:

TypeErrorTraceback (most recent call last)

< ipython-input-2-8ebc216c2192> in < module>()

228

229

--> 230 get_hs_data(index_list) #沪深数据

231

232 (pe_df, pb_df) = pe_pb_analysis(index_list)

< ipython-input-2-8ebc216c2192> in get_hs_data(index_list, data_root)

133 df_pe_pb = pd.DataFrame.from_csv(data_path)

134 start_date = df_pe_pb.iloc[-1].name + timedelta(1)

--> 135 df_pe_pb = pd.concat([df_pe_pb, get_index_pe_pb(code, start_date)])

136 else:#初次计算

137 print 'init'

< ipython-input-2-8ebc216c2192> in get_index_pe_pb(code, start_date, end_date)

59 for d in date_list: #交易日

60 pe_pb = get_index_pe_pb_date(code,d)

---> 61 pe_list.append(pe_pb[0])

62 pb_list.append(pe_pb[1])

63 df = pd.DataFrame({'PE': pd.Series(pe_list, index=date_list),

TypeError: 'float' object has no attribute '__getitem__'

请帮忙解决,谢谢!

2020-11-10

TAOXUDONG

上鑫金融交易中心诚邀您量化交易的广泛合作。微信:19821028277

2023-04-15

您尚未登录,请 登录 或者 注册 聚宽发表回复。

取 消

提 交

关于

关于我们

联系我们

加入我们

数据

指数数据

基金数据

国泰安数据

股票财务数据

金融期货数据

行业概念数据

帮助

常见问题

API文档

Python教程

Python 2 to 3

友情链接

果仁网

关注我们

知乎专栏

雪球

微信公众号

用户协议 | 隐私政策

@2025 @joinquant.com | 京ICP备17068639号-5 | 增值电信业务经营许可证:京B2-20212305

关于

关于我们

加入我们

联系我们

数据

指数数据

基金数据

国泰安数据

股票财务数据

金融期货数据

行业概念数据

帮助

常见问题

API文档

Python教程

@2025 @joinquant.com | 京ICP备17068639号-5 | 增值电信业务经营许可证:京B2-20212305

相关文章