VeighNa量化社区
你的开源社区量化交易平台
dipole's Avatar
Member
离线
1 帖子
声望: 1

linux 上,anacondapython3.7 环境中,从源码安装时遇到了类似的问题,目前已解决,在此记录一下,希望能有所帮助。
问题原因猜测
CTP API 动态链接库 libthostmduserapi_se.so 和 libthosttraderapi_se.so 对另外两个动态链接库 libstdc++.so.6 和 libgcc_s.so.1 的依赖与在 anaconda 环境中安装 vnpy_ctp 时编译生成的 vnctpmd.cpython-37m-x86_64-linux-gnu.so 和 vnctptd.cpython-37m-x86_64-linux-gnu.so 对 libstdc++.so.6 和 libgcc_s.so.1 的依赖出现差别。
CTP API 的两个动态链接库依赖的是系统自带的 /usr/lib 目录下的 libstdc++.so.6 和 libgcc_s.so.1 ,而安装 vnpy_ctp 时编译生成的两个动态链接库依赖的却是你安装时所在的 anaconda 环境目录中的 lib 目录中的 libstdc++.so.6 和 libgcc_s.so.1 。
可以使用 ldd 命令查看那些动态链接库是否属于这种情况,那四个动态链接库都在 vnpy_ctp 安装目录中的 api 目录下。
如果确实属于这种情况,可尝试如下解决

  1. 删除原来的 anaconda 环境:conda remove -n 环境名 --all
  2. 新建一个带有 python3.7 的 anaconda 环境:conda create -n 环境名 python=3.7
  3. 切换到新环境所在目录中的 lib 目录下:cd anaconda或miniconda安装目录/envs/环境名/lib
  4. 删除该目录下以 libstdc++.so 和 libgcc_s.so 开头的文件:rm -f libstdc++.so* libgcc_s.so*
  5. 在新环境中安装 vnpy

经过第 4 步,在新环境中,无论在安装过程中编译链接什么,用到的都是系统自带的(/usr/lib/) libstdc++.so.6 和 libgccs.so.1,避免了出现对它俩依赖不一致的情况。
BTW,也许有另一种解法,就是直接修改 CTP API 动态链接库,让它们使用 anaconda 环境目录中 lib 目录下的依赖,但它们是闭源的,直接以二进制文件形式发布,不晓得要怎么改〒

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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