ubuntu18下vnpy1.9.2的安装

本机环境:ubuntu18,anaconda4.3

之前使用米框的rqalpha进行开发,由于其无法实盘,故想改用vnpy。然后就发现了,安装的时候可有无限的坑。这里整理了完整安装+踩坑流程,之所以记录踩坑,有些问题相对小众,不大容易搜到,后面有人遇到类似情况,可以及时迷途知返。

首先对于旧版版本v1.9之前的和新版v2.0,旧版在python2.7上,新版在python3.7上,python3.5不行,特殊注意下

(坑)按照官方教程:https://github.com/vnpy/vnpy/wiki/Ubuntu%E7%8E%AF%E5%A2%83%E5%AE%89%E8%A3%85

但是这个教程实际是V1.9的教程,V2.0并不适用,但文中根本没提到这一点(其实2.0比这个简单,所以按这个安装理论上也是没问题的,不过中间遇到的坑需要一个个踩)

那么2.0版本的教程呢?

这里:https://github.com/vnpy/vnpy_lab/blob/master/cpp_api_binding/doc/build.linux.md

笔者是先安装的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 vnpy27

2,env下安装
pip install future

3,切换到系统下面安装(非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-snappy

4,系统环境下安装
sudo apt-get install build-essential
sudo apt-get install python-dev

5,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
     from qtpy.QtCore import QTimer
  File "/home/john/anaconda3/envs/vnpy27/lib/python2.7/site-packages/qtpy/__init__.py", line 208, in
     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
    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
    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
    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
    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
    import zmq
ImportError: No module named zmq
    执行:pip install zmq

python 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
启动起来了,但是没有行情,有账户信息没有配置

 

ubuntu18下vnpy1.9.2的安装_第1张图片

 

 

 

你可能感兴趣的:(量化_量化投资,量化_vnpy学习记录)