centos系统安装vnpy

在 centos7 中 vnpy1.9的安装

# 软件版本
vnpy-1.9
CentOS release 7 (Final)
gcc (GCC) 4.7.2 20121015 (Red Hat 4.7.2-5)
Python 2.7.13 :: Anaconda 4.0.0 (64-bit)
Anaconda2-4.0.0
conda 4.3.30
MongoDB: v2.7.0
boost_1_68_0

---------------------------
# 安装Python

1.下载 Anaconda2 并安装

``` bash
/cd to/codes/anaconda/
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
```

2.Anaconda2 所安装 的 python 路径

``` bash
bin:        /usr/bin/anaconda2/bin/python
include:     /usr/bin/anaconda2/include/python2.7
lib:         /usr/bin/anaconda2/lib/python2.7
```

若centos之前已经安装python,则删除/usr/bin/python的软连接,重新创建/usr/bin/anaconda2/bin/python的软连接

3.查看 python 的路径

``` bash 
which python
    /usr/bin/anaconda2/bin/python

```

-------------------------

4.snappy 安装

``` bash
yum install -y snappy-devel.x86_64
python -m pip install python-snappy
```

---------------------------
5.mongodb 安装 (pymongo(3.7.1) needs mongodb >= 2.6)

``` bash
# 从 github 下载 mongodb2.7
tar -zxvf mongo-r2.7.0.tar.gz
cd mongo-r2.7.0
scons mongod
scons mongo
scons --prefix=/usr/bin install
```

6.mongodb 配置

``` bash
vim /usr/bin/mongo/mongodb.conf
    
 ## /usr/bin/mongo/mongodb.conf 的文件内容修改为:
logpath=/usr/bin/mongo/mongodb.log
logappend=true
fork=false
maxConns=100
journal=true
bind_ip =0.0.0.0
```

7.mongodb 路径

创建数据库的数据路径

``` bash
mkdir -p /data/db
```

8.mongodb 的安装路径

mongodb 的安装路径该路径需要添加进去环境变量PATH,可以写入到 /ete/profile 或者 ~/.bashrc
export PATH=$PATH:/usr/bin/mongo/bin

## mongod 的 启动

运行 vnpy 前,运行 mongod 服务。

```
mongod &
```

------------------------------
9.boost_1_68_0 安装 (vnpy needs boost >= 1.55)

``` bash
# 下载 boost_1_68_0

# 安装 到 默认路径路径 /usr/local/include , /usr/local/bin
./bootstrap.sh

# 编译和安装最小安装库
./b2 install 
‵‵‵

## boost 的安装路径    

``` bash
include:     /usr/local/include/boost
lib:         /usr/local/lib
```

-------------------------------
10.vnpy1.9 的安装

## 修改vnpy-1.9的CMakeLists.txt

修改 vnpy-1.9的 所有的 CMakeLists.txt
不然 会出现 找不到 boost 和 python 库的问题。

修改所有 CMakeLists.txt 文件:
1 修改 PYTHON_INCLUDE_PATH 
* 修改前: PYTHON_INCLUDE_PATH /usr/include/python2.7
* 修改后: PYTHON_INCLUDE_PATH /usr/bin/anaconda2/include/python2.7

2 修改 PATHS
* 修改前: PATHS /usr/lib/x86_64-linux-gnu
* 修改后: PATHS /usr/bin/anaconda2/lib


也可以用以下脚本修改,项目中 所有的 CMakeLists.txt。

将脚本 放置到 vnpy-1.9 的目录下面。然后运行。

``` bash

#!/bin/bash

function main()
{

    local files=`target_file_search "CMakeLists.txt"`
    if [ $? -ne 0 ]; then
        return 1
    fi

    string_replace "\" "python27" "${files}"
    string_replace "PYTHON_INCLUDE_PATH \/usr\/include\/python2.7" "PYTHON_INCLUDE_PATH \/usr\/bin\/\/anaconda2\/include\/python2.7" "${files}"
    string_replace "PATHS \/usr\/lib\/x86_64-linux-gnu" "PATHS \/usr\/bin\/anaconda2\/lib" "${files}"
    return 0
}

function target_file_search()
{
    local file_name=$1
    files=`find . -name ${file_name}`
    if [ $? -ne 0 ]; then
        return 1
    fi
    echo ${files}
    return 0
}

function string_replace
{
    local patten=$1
    local replaced=$2
    local files=$3
    sed -i "s/${patten}/${replaced}/g" ${files}
    return 0
}

main $*

```

后面按照 网上的指引安装 便可。
``` bash
# cd 到 vnpy-1.9 的目录
install.sh
```
-----------------------------------------

11.numpy可能出现so库不兼容的问题:

python -m pip uninstall numpy

python -m pip install numpy


12. 解决 libta_lib.so 需要 glibc2.14 的问题:

当启动 vnpy 的 程序出现以下问题时。
ImportError: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /root/anaconda2/lib/python2.7/site-packages/talib/../../../libta_lib.so.0)

表示 libta_lib.so 需要 glibc 2.14。

但是 glibc 只有 2.12。

``` bash 
# strings /lib64/libc.so.6 | grep GLIBC
    ...
    GLIBC_2.12

```

注意: 千万不要升级 glibc。否则 会影响到整个系统,可能开不了机。

---------------------------
13.重新 安装 ta-lib 替换原来的 

查看 anaconda2 中 原来的 ta_lib 安装路径: 

``` bash    
a:            /root/anaconda2/lib/libta_lib.a
so:            /root/anaconda2/lib/libta_lib.so.0.0.0
include:     /root/anaconda2/include/ta-lib
bin:        /root/anaconda2/bin/ta-lib-config
``` 

由于需要 覆盖原来的 设置。所以最好 备份以上的路径和文件。

14 查看 libta_lib.so 的 glibc 版本

``` bash
objdump -p /root/anaconda2/lib/libta_lib.so.0.0.0 | grep GLIBC
    GLIBC_2.3
    GLIBC_2.14        # <-- 表示 libta_lib.so 需要 glibc 2.14,这个就是出错的原因
    GLIBC_2.2.5
```

---------------------------
15 下载 ta_lib 的源码,进行 重新 编译和安装。

``` bash
# 下载 和 解压
cd /to/codes/ta_lib
wget https://nchc.dl.sourceforge.net/ ... ib-0.4.0-src.tar.gz
tar xzvf ta-lib-0.4.0-src.tar.gz
chown root:root ta-lib -R
cd ta-lib

# 安装 到 /root/anaconda2
./configure --prefix='/root/anaconda2'
make -j 8 && make install
```

-----------------------------
16 xtpGateway 问题: 
NameError: global name 'xtpGateway' is not defined

## 修改 VnTrader/run.py

屏蔽 run.py 的 xtpGateway 功能。

``` python 
    #    if system == 'Linux': 
    #        me.addGateway(xtpGateway)
```
=========================================

17 解决UnicodeEncodeError问题

UnicodeEncodeError: 'ascii' codec can't encode characters in position 27-32: ordinal not in range(128)

修改locale环境设置的编码,export LANG=zh_CN.UTF-8

转自及参考:

http://www.vnpie.com/forum.php?mod=viewthread&tid=2935&highlight=centos
https://zhuanlan.zhihu.com/p/33059558

你可能感兴趣的:(工作)