问题描述

  1. 按照vnpy官网文档https://www.vnpy.com/docs/cn/install.html手动安装步骤执行到第4步时报错:
    https://www.vnpy.com/docs/cn/install.html
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)
  1. 在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版本一样)

解决方案

  1. 获取vnpy-ctp工程 https://github.com/vnpy/vnpy_ctp
  2. 使用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\
Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐