如题,尝试了pip install vnpy_ctp之后又报错无法from vnpy_ctp import CtpGateway
请问下有没有遇到这种情况的朋友
如题,尝试了pip install vnpy_ctp之后又报错无法from vnpy_ctp import CtpGateway
请问下有没有遇到这种情况的朋友
请用pip list看一下是否安装成功,如果安装成功后需要再重启一下试试。
青青子荆 wrote:
请用pip list看一下是否安装成功,如果安装成功后需要再重启一下试试。
安装成功了,但是仍然报错,报错信息是
ImportError: cannot import name 'CtpGateway' from 'vnpy_ctp'
可以看一下vnpy_ctp下面有没有CtpGateway文件,如果有的话,请确认一下有没有文件命名重复或者路径问题。
请试一下原来的语句 即from vnpy.gateway import ctp
如果还是不行的话应该是python环境配置问题
就是用错了对应的python环境
我把之前的python都卸载后,只留了一个anaconda,python3.8。但是还是一样的报错....
那你还是有两个python呀,一个anaconda带的,一个下载vnpy带的
不知道楼主有没有解决,我也是遇到同样的问题。
如果下载的是完整的,然后也是报importerror,并且有多个python的话,请检查一下自己的环境配置
遇到同样的问题,求解答
ImportError: cannot import name 'CtpGateway' from 'vnpy_ctp' (C:\Users\hu\AppData\Local\Programs\Python\Python38\lib\site-packages\vnpy_ctp__init__.py)
除了CTP,其他接口可以连接,应该不是环境配置的问题
那么请升级一下vnpy_ctp看看
在 linux 上,anaconda,python3.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 目录下。
如果确实属于这种情况,可尝试如下解决
conda remove -n 环境名 --all
conda create -n 环境名 python=3.7
cd anaconda或miniconda安装目录/envs/环境名/lib
rm -f libstdc++.so* libgcc_s.so*
经过第 4 步,在新环境中,无论在安装过程中编译链接什么,用到的都是系统自带的(/usr/lib/) libstdc++.so.6 和 libgccs.so.1,避免了出现对它俩依赖不一致的情况。
BTW,也许有另一种解法,就是直接修改 CTP API 动态链接库,让它们使用 anaconda 环境目录中 lib 目录下的依赖,但它们是闭源的,直接以二进制文件形式发布,不晓得要怎么改〒〒