Home
avatar

yuanjh

vnpy_vnpy20使用的异常或报错

vnpy2.0安装后报错ModuleNotFoundError: No module named ‘vnpy.api.ctp.vnctpmd’

1,git clone vnpy的代码
2,安装bash install.sh
3,新建run.py
copy如下内容

from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp
from vnpy.gateway.ctp import CtpGateway
from vnpy.app.cta_strategy import CtaStrategyApp
from vnpy.app.cta_backtester import CtaBacktesterApp
 
def main():
    """Start VN Trader"""
    qapp = create_qapp()
 
    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    
    main_engine.add_gateway(CtpGateway)
    main_engine.add_app(CtaStrategyApp)
    main_engine.add_app(CtaBacktesterApp)
 
    main_window = MainWindow(main_engine, event_engine)
    main_window.showMaximized()
 
    qapp.exec()
 
if __name__ == "__main__":
    main()

python run.py
报错:ModuleNotFoundError: No module named ‘vnpy.api.ctp.vnctpmd’
原因:ctp这一坨都是c相关代码,所以肯定是缺少了c相关代码导致,ctp目录下看到了dll文件,没看到so文件
所以应该是作者忘了放so文件了
setup.py里面有编译脚本
python setup.py build && python setup.py install
然后项目的vnpy/bulid/lib/vnpy/api/ctp/vnctpmd.so和vnctptd.so拷贝到vnpy/vnpy/api/ctp/下面就行了
再次执行python run.py有界面了

注意1,build里面的lib,这个可能有多个,lib.linuxx64,lib.temp,等,找一个对应路径有so的,我这里有build下面有4个lib开始文件夹,但仅有一个相应位置有so文件,其他都是干扰项
注意2,vnctpmd.so和vnctptd.so的名字可能不完全一样,比如vnctptd.xxxxxxxx.so,vnctpmd.xxxxxxx.so等,只要vnctpmd开头so结尾就算满足条件了。
注意3,如果还报错,注意报错是否是无关的接口,比如xtp.so,uft.so等等,是的话从run.py中移除相关代码和import即可.

报错
error: string_view: 没有那个文件或目录

vnpy/api/oes/vnoes/include/c2py/property_helper.hpp:5:23: fatal error: string_view: 没有那个文件或目录 问题原因


解决
.0+

sudo add-apt-repository ppa:jonathonf/gcc-7.1
sudo apt-get update
sudo apt-get install gcc-7 g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 60 --slave /usr/bin/g++ g++ /usr/bin/g++-7

验证:gcc -v

参考:https://github.com/vnpy/vnpy/issues/1911
https://blog.csdn.net/DuanLiuchang/article/details/103001853

bash install.sh时报错,sed: 无法打开临时文件 /etc/sedXXFsLF: 权限不够

Collecting psycopg2
xxx
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
sed: 无法打开临时文件 /etc/sedXXFsLF: 权限不够

解决

install psycopg2

cannot import name ‘Qsci’ from ‘PyQt5’

解决01

install QScintilla

依然报错:
  File "/home/john/PYTHON/vnpy20/vnpy/trader/ui/editor.py", line 4, in <module>
    from PyQt5 import QtWidgets, Qsci, QtGui
ImportError: /home/john/anaconda3/envs/vnpy20/lib/python3.7/site-packages/PyQt5/../../../libQt5Core.so.5: version `Qt_5.13' not found (required by /home/john/anaconda3/envs/vnpy20/lib/python3.7/site-packages/PyQt5/Qsci.so)

解决02

install QScintilla==2.11.3 (如果无法安装,尝试su到root或其他主用户,sudo可能不好使)
提示

解决03

install pyqt5==5.13
问题转移到新问题

报错:
  File "/home/john/PYTHON/vnpy20/vnpy/trader/ui/editor.py", line 4, in <module>
    from PyQt5 import QtWidgets, Qsci, QtGui
RuntimeError: the sip module implements API v12.0 to v12.6 but the PyQt5.Qsci module requires API v12.7

	解决:
	pip uninstall sip
	pip install sip
	pip install python-qt5
	
	 pip install six==1.13.0
	 pip install wmi
	 pip install pyzmq

	查看sip的版本,发现版本不同,前者版本较低。
	解决办法:根据print(sip, sip.SIP_VERSION_STR)显示的sip位置(如/usr/lib/python2.7/dist_package)将文件夹中所有sip开头的文件删除
	sudo rm -f sip*
	pip install sip

新问题

sip module implements API v12.0 to v12.6
无法解决,放弃,conda 删除vnpy20环境,重头安装

vnpy