在 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 "\
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