Ubuntu 16.04下vnpy的安装

vnpy v1.8 release 为例。

安装Ubuntu

推荐的Ubuntu环境:

更新软件源

apt 源

系统设置 -> 软件和更新 -> 下载自:其他站点… -> 选择服务器
这里可以让系统自行选择速度最快的服务器,或者直接选择,如教育网可选清华源,阿里云主机可选阿里源等。




输入密码认证后,在终端依次执行以下命令即可:

1
2
sudo apt-get install update
sudo apt-get install upgrade

pip 源

创建 pip 的配置文件,在终端中执行如下命令创建 .pip 文件夹:

1
$ mkdir ~/.pip/

再执行如下命令创建 pip.conf 文件并编辑:

1
$ vim ~/.pip/pip.conf

这时候会出现 pip.conf 的编辑窗口,这时候内容为空,进入编辑模式,并把如下内容输入到编辑框里面:

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

编辑完后保存并退出 vim

安装Anaconda

下载 Anaconda2 并安装,必须4.0.0 的版本,在终端下依次执行以下命令:

1
2
3
$ wget https://repo.continuum.io/archive/Anaconda2-4.0.0-Linux-x86_64.sh
$ chmod +x Anaconda2-4.0.0-Linux-x86_64.sh
$ ./Anaconda2-4.0.0-Linux-x86_64.sh

后面根据提示按回车或者输入 yes 即可,要注意一下当提示是否要在 .bashrc 文件中更新 PATH 变量时,一定要输入 Yes

1
2
3
4
5
6
Python 2.7.11 :: Continuum Analytics, Inc.
creating default environment...
installation finished.
Do you wish the installer to prepend the Anaconda2 install location
to PATH in your /home/vnpy/.bashrc ? [yes|no]
[no] >>> yes

安装完后执行如下命令让bash的配置文件即时生效:

1
$ source ~/.bashrc

安装依赖项

执行以下命令安装应用软件和所需的 python 库及编译工具:

1
2
3
$ sudo apt-get install mongodb cmake git
$ sudo apt-get install libsnappy-dev python-snappy
$ apt-get install libboost-all-dev build-essential python-dev

其中,如果未安装 python-snappy 的话会报 ImportError: No module named snappy. 错误。
详见:https://github.com/vnpy/vnpy/issues/639

MongoDB

MongoDB 安装后默认配置为自启动的系统服务,可以使用如下命令查看 MongoDB 的数据文件和日志文件的具体位置:

1
$ head /etc/mongodb.conf

会显示如下内容:

1
2
3
4
5
6
7
# mongodb.conf

# Where to store the data.
dbpath=/var/lib/mongodb

#where to log
logpath=/var/log/mongodb/mongodb.log

使用默认配置即可,不用进行更改。MongoDB客户端推荐Robomongo,下载官方压缩包,解压后进入到 bin 目录,双击 robomongo 即可。

安装vn.py

下载 vn.py最新发行版 压缩包后解压。或直接将最新版源代码 clone 到本地:

1
$ git clone https://github.com/vnpy/vnpy.git

然后运行目录下的 install.sh 脚本安装 vnpy

1
$ bash install.sh

如果一切顺利的话,该脚本会自动完成编译、安装 vn.py 的相关工作。当然不会那么顺利。

运行VnTrader

完成以上安装步骤后,可以尝试运行 VnTrader 来检查是否成功安装了所有的环境,进入 vnpy/examples/VnTrader ,运行:

1
python run.py

出现下图所显示的界面,则说明安装成功:

常见的运行时错误及解决方案

  1. Segmentation fault (core dumped)
    Anaconda 版本不对。必须Anaconda2-4.0.0 版。目测作者开发时的就是这个版本。

  2. ImportError: No module named talib
    因为 quantopianpackageaws 上,可能无法正常下载,在脚本自动安装 vnpy 时会因为出现超时而安装失败的情况。可以科学上网后重新输入以下命令进行安装:

    1
    $ conda install -c quantopian ta-lib=0.4.9

或者先下载对应安装包再进行安装。下载地址

  1. ImportError: No module named vnpy.event
    重新安装即可。

  2. ImportError: No module named queue
    安装 future 模块,终端下运行:

    1
    $ pip install future

这是为了兼容 python3 而做出的修改,future 模块已经被包含在 requirements.txt 文档中,但有几率安装失败。

  1. ImportError: twsapi.so: cannot open shared object file: No such file or directory
    重新编译 vnib 模块,进入 vnpy/api/ib,运行:
    1
    $ bash build.sh

如果继续报错:g++: internal compiler error: Killed (program cc1plus) 原因为内存不足。如果可以,增加内存分配后重新编译。然后返回项目根目录,重新安装 vnpy即可:

  1. NameError: global name 'xtpGateway' is not defined
    查看代码源文件后发现,代码中只有以下命令,但未 import 相关底层接口。
    1
    2
    if system == 'Linux':
    me.addGateway(xtpGateway)

作者表示:

移除掉 run.py 里的 xtpGateway 相关代码就行

相关链接

  1. vnpy项目文档 Wiki - Ubuntu环境安装
  2. vnpy知乎专栏 - vn.trader的Ubuntu运行环境搭建教程
  3. Issues #766: ImportError: twsapi.so
  4. Issues #789: Segmentation fault (core dumped)