vnpy 运行报错: cannot import name ‘CtpGateway‘ from ‘vnpy_ctp‘
问题描述按照vnpy官网文档https://www.vnpy.com/docs/cn/install.html手动安装步骤执行到第4步时报错:PS F:\vnpy\vnpy\examples\vn_trader> python run.pyTraceback (most recent call last):File "run.py", line 7, in <module>fro
·
问题描述
- 按照vnpy官网文档https://www.vnpy.com/docs/cn/install.html手动安装步骤执行到第4步时报错:

PS F:\vnpy\vnpy\examples\vn_trader> python run.py
Traceback (most recent call last):
File "run.py", line 7, in <module>
from vnpy.gateway.ctp import CtpGateway
File "F:\python\lib\site-packages\vnpy\gateway\ctp\__init__.py", line 1, in <module>
from vnpy_ctp import CtpGateway
ImportError: cannot import name 'CtpGateway' from 'vnpy_ctp' (F:\python\lib\site-packages\vnpy_ctp\__init__.py)
- 在F:\python\Lib\site-packages\vnpy_ctp\gateway下找到ctp_gateway.py,在命令行下import报错如下
>>> from vnpy_ctp.gateway.ctp_gateway import CtpGateway
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "F:\python\lib\site-packages\vnpy_ctp\gateway\__init__.py", line 1, in <module>
from .ctp_gateway import CtpGateway
File "F:\python\lib\site-packages\vnpy_ctp\gateway\ctp_gateway.py", line 33, in <module>
from ..api import (
File "F:\python\lib\site-packages\vnpy_ctp\api\__init__.py", line 1, in <module>
from .vnctpmd import MdApi
ImportError: DLL load failed while importing vnctpmd: 找不到指定的模块。
问题原因
参考https://github.com/vnpy/vnpy/issues/2245
推测原因可能为 python版本不匹配(本机python版本3.8 ,官网写的是python3.7)
从而导致ctpdll相关的F:\python\Lib\site-packages\vnpy_ctp\api\vnctpmd.pyd和F:\python\Lib\site-packages\vnpy_ctp\api\vnctptd.pyd无法正常运行(运行pyd文件需要和编译它的Python版本一样)
解决方案
- 获取vnpy-ctp工程 https://github.com/vnpy/vnpy_ctp
- 使用vistual studio编译两个.pyd文件
- sln路径:vnpy_ctp\api\vnctp\vnctp.sln
- 修改vnctpmd和vnctptd两个项目的包含目录和库目录为本机电脑上的python路径

- 生成解决方案,编译两个pyd
生成路径:\vnpy_ctp\api\vnctptd.pyd \vnpy_ctp\api\vnctpmd.pyd - 将两个pyd替换至F:\python\Lib\site-packages\vnpy_ctp\api\
更多推荐


所有评论(0)