windows vnpy运行过程及问题记录

windows vnpy运行过程及问题记录

正确的执行步骤(总结)

前置条件

完整安装流程

步骤1:创建 Python 3.10 虚拟环境
powershell 复制代码
# 创建虚拟环境
py -3.10 -m venv .venv310

# 激活虚拟环境
.\.venv310\Scripts\activate
步骤2:安装核心 vnpy 框架
powershell 复制代码
# 在虚拟环境中执行安装脚本
.\install.bat

注意 :如果 ta_lib 安装失败(需要编译),可以:

  • 先安装预编译的 numpy:python -m pip install numpy --index-url https://pypi.org/simple
  • 或者暂时跳过 ta_lib,先完成其他安装
步骤3:安装策略应用模块
powershell 复制代码
# 使用 VeighNa 的 PyPI 源安装策略模块
python -m pip install -i https://pypi.vnpy.com --trusted-host pypi.vnpy.com vnpy_ctastrategy vnpy_ctabacktester vnpy_sqlite
步骤4:安装 CTP 交易网关
powershell 复制代码
# 检查是否有预编译 wheel(推荐)
python -m pip install -i https://pypi.vnpy.com --only-binary=:all: --trusted-host pypi.vnpy.com vnpy_ctp

# 如果上面失败(没有 wheel),需要:
# 1. 安装 Visual Studio Build Tools(包含 C++ 编译工具)
# 2. 或者使用 VeighNa Studio(官方定制 Python 发行版)
步骤5:创建启动脚本 run.py
python 复制代码
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp

# 如果安装了 vnpy_ctp,取消下面的注释
# from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp


def main():
    """Start VeighNa Trader"""
    qapp = create_qapp()
    
    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    
    # 如果安装了 vnpy_ctp,取消下面的注释
    # main_engine.add_gateway(CtpGateway)
    main_engine.add_app(CtaStrategyApp)
    main_engine.add_app(CtaBacktesterApp)
    
    main_window = MainWindow(main_engine, event_engine)
    main_window.showMaximized()
    
    qapp.exec()


if __name__ == "__main__":
    main()
步骤6:运行 VeighNa Trader
powershell 复制代码
# 确保在虚拟环境中
python .\run.py

关键要点

  1. 必须使用 Python 3.10,不要用 更高版本
  2. 必须使用虚拟环境,避免依赖冲突
  3. 使用 VeighNa 的 PyPI 源-i https://pypi.vnpy.com
  4. 如果遇到 SSL 错误 ,添加 --trusted-host pypi.vnpy.com
  5. vnpy_ctp 需要编译或 wheel,如果都没有,考虑使用 VeighNa Studio

📝 详细过程记录(遇到的问题及解决方案)

1. 运行 install.bat 安装ta_lib和vnpy的依赖及其框架

cmd 下

复制代码
./install.bat

2. 按照README.md中给出的代码创建run.py

Python 复制代码
from vnpy.event import EventEngine
from vnpy.trader.engine import MainEngine
from vnpy.trader.ui import MainWindow, create_qapp

from vnpy_ctp import CtpGateway
from vnpy_ctastrategy import CtaStrategyApp
from vnpy_ctabacktester import CtaBacktesterApp


def main():
    """Start VeighNa Trader"""
    qapp = create_qapp()

    event_engine = EventEngine()
    main_engine = MainEngine(event_engine)
    
    main_engine.add_gateway(CtpGateway)
    main_engine.add_app(CtaStrategyApp)
    main_engine.add_app(CtaBacktesterApp)

    main_window = MainWindow(main_engine, event_engine)
    main_window.showMaximized()

    qapp.exec()


if __name__ == "__main__":
    main()

但运行时报如下错误:

复制代码
PS D:\own\量化\vnpy> python.exe .\run.py
Traceback (most recent call last):
  File "D:\own\量化\vnpy\run.py", line 5, in <module>
    from vnpy_ctp import CtpGateway
ModuleNotFoundError: No module named 'vnpy_ctp'

原因:vnpy_ctp 不在这个 vnpy 核心仓库里,它是"交易接口网关"插件包,需要单独 pip install。

手动安装 vnpy_ctp

复制代码
pip install vnpy_ctp

此时,又有报错如下:

复制代码
PS D:\own\量化\vnpy> pip install vnpy_ctp
WARNING: Ignoring invalid distribution ~ip (C:\Users\Administrator\AppData\Local\Programs\Python\Python312\Lib\site-packages)
Collecting vnpy_ctp
  Using cached vnpy_ctp-6.7.11.2.tar.gz (12.6 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [20 lines of output]
      + meson setup C:\Users\Administrator\AppData\Local\Temp\pip-install-tvjefcqq\vnpy-ctp_d232ea6b74ec4ceeb2c0f266a65cf01b C:\Users\Administrator\AppData\Local\Temp\pip-install-tvjefcqq\vnpy-ctp_d232ea6b74ec4ceeb2c0f266a65cf01b\.mesonpy-4nwp9ywi -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=C:\Users\Administrator\AppData\Local\Temp\pip-install-tvjefcqq\vnpy-ctp_d232ea6b74ec4ceeb2c0f266a65cf01b\.mesonpy-4nwp9ywi\meson-python-native-file.ini
      The Meson build system
      Version: 1.10.1
      Source dir: C:\Users\Administrator\AppData\Local\Temp\pip-install-tvjefcqq\vnpy-ctp_d232ea6b74ec4ceeb2c0f266a65cf01b
      Build dir: C:\Users\Administrator\AppData\Local\Temp\pip-install-tvjefcqq\vnpy-ctp_d232ea6b74ec4ceeb2c0f266a65cf01b\.mesonpy-4nwp9ywi
      Build type: native build
      WARNING: Failed to activate VS environment: Could not find C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe
      Project name: vnpy_ctp
      Project version: 6.7.11.2

      ..\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['c++'], ['g++'], ['clang++'], ['clang-cl']]
      The following exception(s) were encountered:
      Running `icl ""` gave "[WinError 2] 系统找不到指定的文件。"
      Running `cl /?` gave "[WinError 2] 系统找不到指定的文件。"
      Running `c++ --version` gave "[WinError 2] 系统找不到指定的文件。"
      Running `g++ --version` gave "[WinError 2] 系统找不到指定的文件。"
      Running `clang++ --version` gave "[WinError 2] 系统找不到指定的文件。"
      Running `clang-cl /?` gave "[WinError 2] 系统找不到指定的文件。"

      A full log can be found at C:\Users\Administrator\AppData\Local\Temp\pip-install-tvjefcqq\vnpy-ctp_d232ea6b74ec4ceeb2c0f266a65cf01b\.mesonpy-4nwp9ywi\meson-logs\meson-log.txt
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> vnpy_ctp

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

原因:

执行 pip install vnpy_ctp 时,pip 没有拿到可直接安装的预编译 wheel,而是拿到了源码包:

Using cached vnpy_ctp-6.7.11.2.tar.gz

于是 pip 走"从源码编译安装"的流程(日志里出现了 meson setup),但系统里 没有可用的 C/C++ 编译器工具链,所以 Meson 找不到任何编译器:

找不到 VS 环境:Could not find ...vswhere.exe

找不到编译器:Unknown compiler(s): ... ['cl'] ...(MSVC 的 cl.exe 不存在/不在环境里)

因此失败点就是:vnpy_ctp 需要编译(或需要 wheel),环境缺编译器

我现在用的python是3.12版本的,vnpy_ctp没有3.12版本的wheel,改为3.10版本的python

从连接[https://www.python.org/downloads/windows/\]中下载3.10的python并安装

创建3.10版本的虚拟环境

复制代码
py -3.10 -m venv .venv310
.\.venv310\Scripts\activate

在3.10环境下,重新安装vnpy的依赖和框架:

执行

复制代码
./install.bat

执行如下命令安装vnpy_ctp

复制代码
pip install -i https://pypi.vnpy.com --only-binary=:all: vnpy_ctp

继续安装其他的依赖

复制代码
python -m pip install -i https://pypi.vnpy.com --trusted-host pypi.vnpy.com vnpy_ctastrategy vnpy_ctabacktester vnpy_sqlite
相关推荐
Albert Edison6 小时前
【Python】学生管理系统
开发语言·数据库·python
love530love8 小时前
【ComfyUI】解决 ModuleNotFoundError: No module named ‘inference_core_nodes‘ 问题
人工智能·windows·python·comfyui·inference-core
亚亚的学习和分享10 小时前
python基础语法----条件语句
python
Zzz 小生11 小时前
LangChain Streaming-Overview:流式处理使用完全指南
人工智能·python·语言模型·langchain·github
yzx99101311 小时前
Python数据结构入门指南:从基础到实践
开发语言·数据结构·python
百锦再11 小时前
Jenkins 全面精通指南:从入门到脚本大师
运维·后端·python·servlet·django·flask·jenkins
FYKJ_201011 小时前
springboot大学校园论坛管理系统--附源码42669
java·javascript·spring boot·python·spark·django·php
Loo国昌12 小时前
【AI应用开发实战】 03_LangGraph运行时与状态图编排:从直接执行到图编排的演进之路
人工智能·后端·python·自然语言处理·prompt
ValhallaCoder12 小时前
hot100-堆
数据结构·python·算法·
小小小米粒12 小时前
函数式接口 + Lambda = 方法逻辑的 “插拔式解耦”
开发语言·python·算法