VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 12
声望: 3

作为Python开发的开源项目,vn.py本身具有非常好的跨平台通用性,毕竟Python几乎可以在所有主流操作系统上运行。但对于Linux系统,官方团队只提供了对Ubuntu 18.04版本的支持(主要就是安装脚本)。

本人一直用的是CentOS的服务器,折腾了几天,终于在上面把vnpy跑起来了。没有记录折腾的细节,只是记录了下正常的操作步骤,欢迎大家一起交流。
以下内容全部基于CentOS 7.6版本,首先准备好一个全新安装的系统,然后跟着一步步操作即可。

安装python环境

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
按照提示信息进行安装,当出现以下信息时,选择no,不然后面vncserver无法正常启动。还不清楚具体原因。
by running conda init? [yes|no]
[no] >>> no

安装Mate桌面

yum groups install "X Window System" -y
yum install epel-release -y
yum groups install "MATE Desktop" -y
systemctl set-default graphical.target

安装VNC Server

yum install tigervnc-server -y

# 替换User为root,增加显示分辨率参数设置
sed -r -i "s/^(ExecStart.*)<USER>(.*%i)/\1root\2 -geometry 1920x1200 -depth 16/" /lib/systemd/system/vncserver@.service
sed -r -i "s/^(PIDFile.*)home\/<USER>(.*pid)/\1root\2/" /lib/systemd/system/vncserver@.service

mv /lib/systemd/system/vncserver@.service /lib/systemd/system/vncserver@:1.service
systemctl daemon-reload
vncpasswd
systemctl start vncserver@:1.service
systemctl enable vncserver@:1.service

# 屏蔽默认桌面,启动mate桌面
sed -r -i "s%^/etc/X11/xinit/xinitrc$%# &%" /root/.vnc/xstartup
echo "/usr/bin/mate-session &" >> /root/.vnc/xstartup

# 其它操作
# 禁用selinux
sed -r -i "s/^(SELINUX=).*/\1disabled/" /etc/selinux/config
# 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service

reboot

# 如果是云服务器,需要确保开放了TCP 5901端口

安装VS Code

rpm --import https://packages.microsoft.com/keys/microsoft.asc
sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
yum check-update
yum install code -y

升级GCC版本

注意GCC必须要使用9.1.0以上的版本,否则在编译vnpy的时候,会报-std=c++17相关的错误。
GCC的编译时间很长,估计得几个小时。

yum install gcc gcc-c++ bzip2 m4  gmp-devel.x86_64  -y

wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
tar xvf gcc-9.1.0.tar.gz
cd gcc-9.1.0/
./contrib/download_prerequisites

cd gmp;mkdir temp;cd temp
../configure --prefix=/usr/local/gmp-6.1.0
make && make install

cd ../../mpfr;mkdir temp;cd temp
../configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-6.1.0
make && make install

cd ../../mpc;mkdir temp;cd temp
../configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4
make && make install

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mpc-1.0.3/lib:/usr/local/gmp-6.1.0/lib:/usr/local/mpfr-3.1.4/lib

cd ../..;mkdir temp;cd temp
../configure --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4 --with-mpc=/usr/local/mpc-1.0.3
make -j4 && make install

我的服务器是4核的,就在make 后面加了-j4,大家可根据自己的情况调整,缩短编译时间。

安装vnpy

最后终于可以安装vn.py了,在此过程中会自动编译Linux上支持的交易接口,如CTP/OES等。

# 切换到python环境
. ~/miniconda3/bin/activate
yum install postgresql-devel* libxkbcommon-x11 -y
下载vnpy的最新源码包并解压。
cd vnpy
bash install.sh
Administrator
avatar
加入于:
帖子: 4550
声望: 325

WOW,好文章,给你加个高亮

Member
avatar
加入于:
帖子: 2
声望: 0

必须顶起来,好棒的指导。关于gcc的版本,真是卡了我一天。多谢了

Member
avatar
加入于:
帖子: 2
声望: 0

第一次安装失败,翻到了此文,继续安装第二次。。。。

Member
avatar
加入于:
帖子: 8
声望: 0

centos7.5 应该也是一样的吧 目前我系统里边是centos7.5 64位

Member
avatar
加入于:
帖子: 2
声望: 0

真棒!!!

Member
avatar
加入于:
帖子: 1
声望: 0

sed -r -i "s@^/etc/X11/xinit/xinitrc$@# &@" /root/.vnc/xstartup

sed:-e 表达式 #1,字符 28:未终止的“s”命令

Member
avatar
加入于:
帖子: 8
声望: 1

楼主最后一条命令 ../configure --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4 --witpc=/usr/local/mpc-1.0.3
报错unrecognized option: --witpc=/usr/local/mpc-1.0.3

Member
avatar
加入于:
帖子: 12
声望: 3

neo-vnpy wrote:

楼主最后一条命令 ../configure --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4 --witpc=/usr/local/mpc-1.0.3
报错unrecognized option: --witpc=/usr/local/mpc-1.0.3

不好意思,少写了,应该是--with-mpc=/usr/local/mpc-1.0.3
已更正。

Member
avatar
加入于:
帖子: 8
声望: 1

木头哥 wrote:

neo-vnpy wrote:

楼主最后一条命令 ../configure --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4 --witpc=/usr/local/mpc-1.0.3
报错unrecognized option: --witpc=/usr/local/mpc-1.0.3

不好意思,少写了,应该是--with-mpc=/usr/local/mpc-1.0.3
已更正。
非常感谢你的分享与帮助

Member
avatar
加入于:
帖子: 8
声望: 1

如果在升级GCC版本的最后一步make 上遇到了 gmp.h 相关的报错 可以尝试一下

yum install gmp-devel.x86_64

在执行下面命令时,如果下载速度过慢,这个切换pip源的文档可以帮助到你

./contrib/download_prerequisites

运行bash install.sh时 遇到psycopg2安装错误

yum install postgresql postgresql-server pgadmin3 postgresql-contrib -y
Member
avatar
加入于:
帖子: 12
声望: 3

太好了,我在重新升级GCC的时候,刚好碰到这个gmp.h相关的报错了,我把这个更新进去,可以避免后面的朋友们踩坑。

Member
avatar
加入于:
帖子: 12
声望: 3

kilometer wrote:

sed -r -i "s@^/etc/X11/xinit/xinitrc$@# &@" /root/.vnc/xstartup

sed:-e 表达式 #1,字符 28:未终止的“s”命令

试下这个:
sed -r -i "s%^/etc/X11/xinit/xinitrc$%# &%" /root/.vnc/xstartup

其实就是将xstartup文件中,/etc/X11/xinit/xinitrc前面加一个#号,注释掉该行。

Member
avatar
加入于:
帖子: 8
声望: 1

我最终在启动python run.py 遇到了
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.
请问楼主有同样的问题吗,我是无界面运行
有点头绪了,解决中

Member
avatar
加入于:
帖子: 12
声望: 3

如果是无界面运行,就不能运行带显示功能的run.py,应该要执行vnpy/examples/no_ui/下的run.py吧

Member
avatar
加入于:
帖子: 8
声望: 1

木头哥 wrote:

如果是无界面运行,就不能运行带显示功能的run.py,应该要执行vnpy/examples/no_ui/下的run.py吧

是的 按你说的我已经成功运行run.py

Member
加入于:
帖子: 13
声望: 0

gcc编译结束了,没显示什么错误,但是看了下版本 还是不是9.1.0 这是为什么

Member
avatar
加入于:
帖子: 12
声望: 3

make install了吗?可以通过whereis gcc看下是否安装到默认的/usr/local/bin目录下,再执行/usr/local/bin/gcc -v看看

Member
加入于:
帖子: 13
声望: 0

在centos里的vnpy主界面很小
点了最大化后还是不变,很小,不能把日志等组件显示出来,
而且不能通过拖拉使得主界面再变大
这个怎么解决?

其他app界面点开是正常的 很大的 能占满全屏
就主界面不行

Member
avatar
加入于:
帖子: 12
声望: 3

上个图看看。
是用的本地电脑还是远程服务器。
分辨率是多少。

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】