本文共 4927 字,大约阅读时间需要 16 分钟。
本机环境:ubuntu18,anaconda4.3
之前使用米框的rqalpha进行开发,由于其无法实盘,故想改用vnpy。然后就发现了,安装的时候可有无限的坑。这里整理了完整安装+踩坑流程,之所以记录踩坑,有些问题相对小众,不大容易搜到,后面有人遇到类似情况,可以及时迷途知返。
首先对于旧版版本v1.9之前的和新版v2.0,旧版在python2.7上,新版在python3.7上,python3.5不行,特殊注意下
(坑)按照官方教程:
但是这个教程实际是V1.9的教程,V2.0并不适用,但文中根本没提到这一点(其实2.0比这个简单,所以按这个安装理论上也是没问题的,不过中间遇到的坑需要一个个踩)
那么2.0版本的教程呢?
这里:
笔者是先安装的1.9,后来发现坑太多,转安装2.0,2.0眼看最后一步了,有个问题没找到处理方案,丢到了论坛中了,在回头安装1.9.最终结果1.9安装成功了。2.0暂时放着,后续有时间了在研究,安装好后在补充博客。
vnpy安装的最大感受是,注意python版本,之前安装的大部分开源程序,名义上基于python2.x,3.x实际上2.x的都可基于2.7安装,3.x的都可基于3.5安装。一般来说问题不大,基本兼容的。但是vnpy必须严格遵守版本要求。v1.9对应python2.7,v2.0对应python3.7,尤其是v2.0这个基于python3.5会有非常多的问题,而且解决方案比较难找。还有一点就是基于anaconda的话最好使用全新的版本(v2.0的安装尤其需要如此),作者本机原来是稍旧版的anaconda,并不支持python3.7,后来通过conda 升级anaconda,然后使得其支持python3.7,但是基于此创建的虚拟环境,很多pip安装的包执行起来是混乱的,感觉上并没有和系统环境完全隔离开。最后重装了最新的anaconda后,新版anaconda创建的pyton3.7环境基本就没问题的。
尝试第五次安装(这次成功之前,经历过四次失败!!!),目标v1.9
主要参考:https://github.com/vnpy/vnpy/wiki/Ubuntu%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85s 1,创建conda环境 conda create -n vnpy27 python=2.7 source activate vnpy272,env下安装
pip install future3,切换到系统下面安装(非env环境)(系统默认其实也是ana的环境,是ana就ana吧,懒癌晚期,摸索过一遍的东西绝对不摸索第二遍)
sudo apt-get install git sudo apt-get install mongodb sudo apt-get install libboost-all-dev sudo apt-get install cmake sudo apt-get install libsnappy-dev sudo apt-get install python-snappy4,系统环境下安装
sudo apt-get install build-essential sudo apt-get install python-dev5,env下安装
source activate vnpy27长期支持版git地址:https://github.com/vnpy/vnpy/tree/v1.9.2-LTS
切换到自己之前的git clone项目中,切换分之即可 cd ~/PYTHON/vnpy git checkout v1.9.2-LTS --是否安装CTP接口,yes --有几个输入错了,输了大写Y,貌似认为n了 重新安装下,全部回车(y) 报错: File "build/bdist.linux-x86_64/egg/vnpy/api/rest/rest_client.py", line 28 method: str, 暂不理会cd ~/PYTHON/vnpy/examples/VnTrader
python run.py 报错: File "/home/john/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/event/eventEngine.py", line 11, in <module> from qtpy.QtCore import QTimer File "/home/john/anaconda3/envs/vnpy27/lib/python2.7/site-packages/qtpy/__init__.py", line 208, in <module> raise PythonQtError('No Qt bindings could be found') qtpy.PythonQtError: No Qt bindings could be found 进入python窗口,import qtpy确实无法import 可能原因:由于在ananconda中安装,所以部分系统自带的包,无法使用(或版本不对),可能需要独立安装下 参考教程中的安装pyqt4,部分 ana环境中执行: sudo apt-get install qt4-dev-tools sudo apt-get install libqwt5-qt4 libqwt5-qt4-dev 之前自己已下载的 cd ~/下载/sip-4.19.8 sudo python configure.py sudo make install cd ~/下载/PyQt4_gpl_x11-4.12.1 sudo python configure-ng.py sudo make sudo make install 依然不行。 百度下报错提示:qtpy.PythonQtError: No Qt bindings could be found 参考:https://github.com/spyder-ide/spyder/issues/3545 执行: pip uninstall spyder pip install spyder==3.2.1 报错:pylint requires Python '>=3.4.*' but the running Python is 2.7.11 忽略,不使用这种解决方式,继续尝试其他解决方法 参考:https://github.com/spyder-ide/spyder/issues/4078 执行:conda install pyqt 执行python import qtpy 成功!cd ~/PYTHON/vnpy/examples/VnTrader
python run.py 报错: File "/home/john/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/api/rest/RestClient.py", line 11, in <module> from enum import Enum ImportError: No module named enum pip install enum 成功! cd ~/PYTHON/vnpy/examples/VnTrader python run.py 报错: File "/home/john/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/api/rest/RestClient.py", line 12, in <module> from typing import Any, Callable, Optional ImportError: No module named typing pip install typing 成功 cd ~/PYTHON/vnpy/examples/VnTrader python run.py 报错: File "/home/john/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/api/xtp/__init__.py", line 4, in <module> from .vnxtpquote import QuoteApi ImportError: libsodium.so.18: cannot open shared object file: No such file or directory 参考:https://mrxn.net/Linux/541.html 执行: find / -name "libsodium.so.18" 2>/dev/null sudo ln -sf /home/john/anaconda3/pkgs/libsodium-1.0.10-0/lib/libsodium.so.18 /usr/lib/libsodium.so.18 sudo ldconfig python run.py 依然是同样的报错: File "/home/john/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/api/xtp/__init__.py", line 4, in <module> from .vnxtpquote import QuoteApi ImportError: libsodium.so.18: cannot open shared object file: No such file or directory 参考:https://blog.csdn.net/baidu_27518829/article/details/88383775 执行: conda install -c conda-forge libsodium python run.py 依然是同样的报错。 参考:https://github.com/vnpy/vnpy/issues/1364 执行: sudo apt-get install libsodium-dev cd /home/john/PYTHON/vnpy/vnpy/api/xtp bash build.sh python run.py 依然是同样的报错。 参考:同上 执行: sudo gedit run.py 注释掉加载xtpGateway的代码 python run.py 报错: File "/home/john/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/rpc/vnrpc.py", line 7, in <module> import zmq ImportError: No module named zmq 执行:pip install zmqpython run.py
报错: File "run.py", line 65, in main me.addGateway(xtpGateway) NameError: global name 'xtpGateway' is not defined 执行:sudo gedit run.py 有个地方漏掉了,没注释干净 python run.py 启动起来了,但是没有行情,有账户信息没有配置