Home
avatar

yuanjh

vnpy_ubuntu18下vnpy的安装

vnpy1.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地址i:https://github.com/vnpy/vnpy/tree/v1.9.2-LTS
切换到自己之前的git clone项目中,切换分之即可
cd ~/PYTHON/vnpy
git checkout v1.9.2-LTS
bash install.sh
—是否安装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
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
启动起来了,但是没有行情,有账户信息没有配置

vnpy1.9问题补充(20190510接上)

卸载旧vnpy1.9

卸载之前pip安装的vnpy1.9版本,否则和代码中重复了,不知道执行代码还是包里的vnpy

pip uninstall vnpy

报错No module named matplotlib

报错:ImportError: No module named matplotlib.ticker

解决:
conda install matplotlib

报错No module named statsmodels

  File "/root/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/trader/app/ctaStrategy/ctaBacktesting.py", line 38, in <module>
    import statsmodels.api as sm  # 最小二
ImportError: No module named statsmodels.api
解决:
conda install statsmodels  

报错cannot import name AbstractMethodError

报错:
  File "/root/anaconda3/envs/vnpy27/lib/python2.7/site-packages/pandas/core/groupby/groupby.py", line 23, in <module>
    from pandas.errors import AbstractMethodError
ImportError: cannot import name AbstractMethodError

解决
conda install pandas=0.24.2

报错:/usr/include/features.h:424:12: fatal error: sys/cdefs.h: 没有那个文件或目录

解决:sudo apt-get —reinstall install libc6 libc6-dev
参考:https://askubuntu.com/questions/470796/fatal-error-sys-cdefs-h-no-such-file-or-directory

安装mpl_finance

pip install mpl_finance

安装PyJWT

pip install PyJWT

合并最新192穿透测试版

upstream 相关设置
git remote add upstream https://github.com/vnpy/vnpy.git
同步本机分支v1.9.2-LTS
git checkout v1.9.2-LTS
git merge upstream/v1.9.2-LTS
同步本机分支master
git checkout master
git merge upstream/master
切断upstream
git remote rm upstream

合并分支v1.9.2-LTS->yuan_vnpy19
git checkout yuan_vnpy19 
git merge v1.9.2-LTS

路径:PYTHON/vnpy19/vnpy/api/ctp
执行:bash build.sh
报错:

CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CTPAPI_MD_LIBRARY
    linked by target "vnctpmd" in directory /home/john/PYTHON/vnpy19/vnpy/api/ctp
CTPAPI_TD_LIBRARY
    linked by target "vnctptd" in directory /home/john/PYTHON/vnpy19/vnpy/api/ctp

-- Configuring incomplete, errors occurred!
See also "/home/john/PYTHON/vnpy19/vnpy/api/ctp/build/CMakeFiles/CMakeOutput.log".
See also "/home/john/PYTHON/vnpy19/vnpy/api/ctp/build/CMakeFiles/CMakeError.log".

如果不理会,直接pycharm执行example下面的run
报错:
  File "/home/john/PYTHON/vnpy19/vnpy/api/ctp/__init__.py", line 4, in <module>
    from .vnctpmd import MdApi
ImportError: libthostmduserapi.so: cannot open shared object file: No such file or directory

创建目录:ctpapi/x64_linux(vnpy19/vnpy/api/ctp/下)
1,将ctpapi下的文件复制一份,到子目录x64_linux中
2,并将thostmduserapi_se.so文件名改为libthostmduserapi_se.so,thosttraderapi_se.so改为libthosttraderapi_se.so
3,此时就可以编译了,去vnpy根路径执行bash install.sh,将其他接口全部yes安装
4,vnpy/api/ctp目录下会生成vnctpmd.so 和vnctptd.so文件。
ctpGateway模块有导入这两个模块。所以将这两个copy到ctpGateway文件夹下
同时ctptestGateway也放一份,否则启动ctptest时也会报错
同时,anaconda里面的相应路径也需要放一份。
此时直接执行VnTrader下的run成功启动界面
(在终端如果无法启动,可以重新安装试试,或者把vnpy项目整体copy到anaconda下的对应sitepack相应目录,之后在重新安装)

远程主机合并最新192穿透测试

1,拉取最新版本挪,git checkout yuan_vnpy19
删除旧版分支git branch -d yuan
2,下拉代码,安装
git pull
bash install.sh
3,执行:cd examples/VnTrader/;python run.py
报错:

Traceback (most recent call last):
  File "run.py", line 28, in <module>
    from vnpy.trader.gateway import (ibGateway, huobiGateway, okexfGateway, okexGateway, ccxtGateway,
  File "/root/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/trader/gateway/ctptestGateway/__init__.py", line 5, in <module>
    from .ctptestGateway import CtptestGateway
  File "/root/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/trader/gateway/ctptestGateway/ctptestGateway.py", line 16, in <module>
    from vnctpmd import MdApi
ImportError: libboost_python-py27.so.1.65.1: cannot open shared object file: No such file or directory


ls 编译前后路径是否有文件缺失
    ls -alh ~/PYTHON/vnpy19/vnpy/trader/gateway/ctptestGateway
    ls -alh /root/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/trader/gateway/ctptestGateway/
    无缺失(pyc无关)

考虑到本机是有一步so的拷贝操作,(未使用原有的,使用编译后生成so复制过来)
    cp ../../vnpy/api/ctp/*.so ../../vnpy/trader/gateway/ctptestGateway/
    cp ../../vnpy/api/ctp/*.so ../../vnpy/trader/gateway/ctpGateway/ 
    依然报同样的错误

尝试查找文件,软连接
    find / -name libboost_python-py27.so.1.65.1
    返回:空
    find / -name libboost_python-py27.so
    返回:/usr/lib/x86_64-linux-gnu/libboost_python-py27.so
    本机目录同ananconda路径下也没有libboost_python-py27.so.1.65.1这个,
    司马当成活马医,试试软连接
    ln -s /usr/lib/x86_64-linux-gnu/libboost_python-py27.so /root/anaconda3/envs/vnpy27/lib/python2.7/site-packages/vnpy-1.9.2-py2.7.egg/vnpy/trader/gateway/ctptestGateway/libboost_python-py27.so.1.65.1
    试试python run.py,依然不行
    删除软连接 rm libboost_python-py27.so.1.65.1

添加上交conda源重新执行安装脚本
    不行

源代码安装libboost
    参考地址:https://stackoverflow.com/questions/46934760/importerror-libboost-python-so-1-65-1-cannot-open-shared-object-file-no-such

    wget https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz \
    && tar zxf boost_1_65_1.tar.gz \
    && cd boost_1_65_1 \
    && ./bootstrap.sh --with-libraries=python --with-python=python2.7 \
    && ./b2 install

卸载手工安装libboost,集成方式重新安装
    sudo apt-get autoremove libboost-dev
    搜索之前自己笔记:sudo apt-get install libboost-all-dev
    执行vnpy的install.sh安装脚本
    报错  
      CMake Error at /usr/share/cmake-3.5/Modules/FindBoost.cmake:1677 (message):
      Unable to find the requested Boost libraries.
      Boost version: 1.65.1
      Boost include path: /usr/local/include
      Could not find the following Boost libraries:
              boost_thread
              boost_date_time
              boost_system

搜索下其他方案
    地址:https://stackoverflow.com/questions/24173330/cmake-is-not-able-to-find-boost-libraries
    sudo apt-get install cmake libblkid-dev e2fslibs-dev libboost-all-dev libaudit-dev
    不行,全部下卸载掉

猜测法,阅读报错部分
    Boost include path: /usr/local/include
      Could not find the following Boost libraries:

              boost_thread
              boost_date_time
              boost_system
              boost_chrono

      Some (but not all) of the required Boost libraries were found.  You may
      need to install these additional Boost libraries.  Alternatively, set
      BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT
      to the location of Boost.
    Call Stack (most recent call first):
      CMakeLists.txt:83 (find_package)
    所以:直接信息Boost include path: /usr/local/include,配置错了
    或者BOOST_LIBRARYDIR,BOOST_ROOT配置错了或为配置
    在安装libboost-all-dev的日志其实有libboost_thread等这一坨信息,但是未找到
    尝试1,
    export Boost_INCLUDE_DIR=/usr/local/include/boost/
    不行。
    尝试2,find / -name libboost_th*    
    /usr/lib/x86_64-linux-gnu/libboost_thread.a
    /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.58.0
    /usr/lib/x86_64-linux-gnu/libboost_thread.so
    export BOOST_LIBRARYDIR=/usr/lib/x86_64-linux-gnu/
    ok了。
这个网上查询到资料和自己不一致,很大可能是自己root登录,软件默认位置和他人大多数不同,导致按照他人方案不可性。

补充:彻底卸载1.58版本(避免影响其他版本安装)
sudo apt-get autoremove libboost1.58-dev

卸载1.65版本
/usr/local/lib$ sudo rm -rf libboost_*
/usr/local/include$ sudo rm -rf boost/

比对本机ok的环境和服务器有问题环境
sudo find / -name 'libboost_python-py27*'
本机:
/usr/lib/x86_64-linux-gnu/libboost_python-py27.a
/usr/lib/x86_64-linux-gnu/libboost_python-py27.so
/usr/lib/x86_64-linux-gnu/libboost_python-py27.so.1.65.1

服务器
/usr/lib/x86_64-linux-gnu/libboost_python-py27.a
/usr/lib/x86_64-linux-gnu/libboost_python-py27.so
/usr/lib/x86_64-linux-gnu/libboost_python-py27.so.1.58.0

可见主要问题时版本不对。  
本机搜索:sudo apt search libboost1.65,有结果
服务器搜索:sudo apt search libboost1.65,无结果
问题比较明显了,apt源不对,将服务器源同步到和本机一致。之后用aptget服务器安装1.65
服务器安装:sudo apt-get install libboost1.65-dev
依然报错。

服务器搜索:sudo apt search libboost-all*
正在排序... 完成
全文搜索... 完成  
libboost-all-dev/bionic,bionic 1.65.1.0ubuntu1 amd64
  Boost C++ Libraries development files (ALL) (default version)
可见,应该安装libboost-all-dev,而不仅libboost1.65  

尝试安装libboost-all-dev。
先卸载libboost1.65在安装libboost-all-dev

安装websocker4.4

下载:https://github.com/huobiapi/Futures-Python-demo/tree/master/Websocket-Python3-demo
安装:pip install websocket_client-0.44.0-py2.py3-none-any.whl

安装hyperopt

pip install hyperopt

安装sklearn

pip install sklearn

multiprocess

pip install multiprocess

安装h5压缩格式的支持

 pip install --upgrade tables

vnpy2.0版本(20190523)

由于1.9的接口很多无法使用,所以实盘只能升级到2.0了

1,创建环境

conda create -n vnpy37 python=3.7 报错 CondaHTTPError: HTTP 404 NOT FOUND for url

使用上交源
  - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main/
  - https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/free/

2,执行bashinstall

切换到git pull的源代码路径
报错:ModuleNotFoundError: No module named ‘vnpy.api.ctp.vnctpmd’

ModuleNotFoundError: No module named 'vnpy.api.ctp.vnctpmd'
    参考:https://github.com/vnpy/vnpy/issues/1686
    To add '.so' on Linux 
    https://github.com/vnpy/vnpy/pull/1693
    就是说需要执行python setup.py build ;python setup.py install
    
自己和1.9比对摸索看出门道了
build里面的lib中找下,build/lib/vnpy/api/ctp,下面有个vnctpmd.so或者vnctptd.so的copy到vnpy/api/ctp路径下下即可
注意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,如果都没有,满足条件so,则编译生成下  
项目根路径/setup.py里面有编译脚本  
执行:python setup.py build即可。  

3,次日启动发现启动又不行了,pycharm也不行

pycharm中启动
报错

  File "/home/john/PYTHON/vnpy20/vnpy/event/eventEngine.py", line 11, in <module>
    from qtpy.QtCore import QTimer
ModuleNotFoundError: No module named 'qtpy'

安装执行:
    conda install pyqt  
    conda install qtpy
执行run.py

新报错
Traceback (most recent call last):
  File "/home/john/PYTHON/vnpy20/run.py", line 2, in <module>
    from vnpy.trader.engine import MainEngine
ModuleNotFoundError: No module named 'vnpy.trader.engine'
同时pycharm提示一堆缺少没有安装的。

干脆重新安装bash install.sh吧。
额,发现git的分支搞错了,分支1.9了,应该时yuan_vnpy20分支
切换回去,好了

4,pycharm提示缺少psycopg2

安装:conda install psycopg2

5,使用接口ctptest时报错

ModuleNotFoundError: No module named 'vnpy.gateway.ctptest.vnctpmd'  
结局:进入vnpy/api/ctp,里面2个so,
vnctpmd.cpython-37m-x86_64-linux-gnu.so
vnctptd.cpython-37m-x86_64-linux-gnu.so
以及:
build/lib/vnpy/trader/gateway/ctptestGateway的2个so(需要改名加前缀lib)拷贝过来
libthostmduserapi_se.so
libthosttraderapi_se.so
copy到ctptestgateway/下面  

启动:报错
此时连接均成功,但是新报错
交易服务器授权验证失败,代码:63,信息:CTP:客户端认证失败

同时注意,anaconda下面的vnpy项目可能也要复制过去,我这里貌似不用

6,使用simnow登录

第一种情况:报错3,不合法的登录
第二种情况:/sys/firmware/dmi/tables/DMI: Permission denied
二者应该等价,应为我什么都没改,都是没取的系统信息导致的

7,在云主机上的安装

1,创建环境,
2,bash install.sh(在安装主脚本时,建议先执行python setup.py build && python setup.py install可以避免很多后续问题)
有一堆报错,删除环境重新按照步骤安装依然如此,暂时不管 3,
conda install pyqt
conda install qtpy
pip install pyqtgraph
pip Install sklearn
4,启动run.py,ok

vnpy