You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#调用VectorBT遇WinError 87错误及VectorBT包归属咨询

问题:C#调用VectorBT时出现WinError 87错误

环境与问题详情

  • 运行环境:Visual Studio 2022 + Anaconda3
  • 操作场景:通过C#调用Python量化回测包VectorBT
  • 触发错误:[WinError 87] The parameter is incorrect: '.\Library\bin'

错误栈信息

File "D:\ProgramData\Anaconda3\lib\os.py", line 1111, in add_dll_directory
    cookie = nt._add_dll_directory(path)
  File "D:\ProgramData\Anaconda3\lib\site-packages\llvmlite\binding\ffi.py", line 162, in <module>
    os.add_dll_directory(os.path.join(os.path.normpath(sys.prefix), 'Library', 'bin'))
  File "D:\ProgramData\Anaconda3\lib\site-packages\llvmlite\binding\dylib.py", line 3, in <module>
    from llvmlite.binding import ffi
  File "D:\ProgramData\Anaconda3\lib\site-packages\llvmlite\binding\__init__.py", line 4, in <module>
    from .dylib import *
  File "D:\ProgramData\Anaconda3\lib\site-packages\numba\core\config.py", line 15, in <module>
    import llvmlite.binding as ll
  File "D:\ProgramData\Anaconda3\lib\site-packages\numba\__init__.py", line 19, in <module>
    from numba.core import config
  File "C:\Users\Rex\AppData\Roaming\Python\Python39\site-packages\vectorbt\_typing.py", line 15, in <module>
    from numba.core.registry import CPUDispatcher
  File "C:\Users\Rex\AppData\Roaming\Python\Python39\site-packages\vectorbt\generic\drawdowns.py", line 171, in <module>
    from vectorbt import _typing as tp
  File "C:\Users\Rex\AppData\Roaming\Python\Python39\site-packages\vectorbt\generic\__init__.py", line 8, in <module>
    from vectorbt.generic.drawdowns import Drawdowns
  File "C:\Users\Rex\AppData\Roaming\Python\Python39\site-packages\vectorbt\__init__.py", line 12, in <module>
    from vectorbt.generic import nb, plotting
   at Python.Runtime.PythonException.ThrowLastAsClrException()
   at Python.Runtime.PyModule.Import(String name)
   at PythonnetSampleConsoleApp.VectorBT.VectorBTMethod() in E:\Github\PythonNetSample\src\PythonnetSampleConsole\VectorBT.cs:line 64
   at PythonnetSampleConsoleApp.Program.Main(String[] args) in E:\Github\PythonNetSample\src\PythonnetSampleConsole\Program.cs:line 32

疑问与解决需求

  1. Anaconda3是否默认包含VectorBT包?
  2. 请提供上述错误的解决建议

解决建议

关于Anaconda3与VectorBT的关系

  • Anaconda3默认不包含VectorBT包,需手动安装,可选择以下方式:
    • Conda安装:conda install -c conda-forge vectorbt
    • Pip安装:pip install vectorbt(需确保在Anaconda目标环境中执行)

WinError 87错误的修复步骤

该错误由llvmlite加载DLL路径时参数异常导致,常见于Pythonnet跨环境调用场景,可按以下步骤排查:

  1. 确认Python环境路径正确性:在C#初始化PythonEngine时,明确指定Anaconda的安装目录为PythonHome,示例代码:
    PythonEngine.PythonHome = @"D:\ProgramData\Anaconda3";
    PythonEngine.Initialize();
    
  2. 手动添加DLL目录:
    • 将Anaconda的Library\bin路径(D:\ProgramData\Anaconda3\Library\bin)添加到系统环境变量PATH中,添加后重启Visual Studio。
    • 或在被调用的Python代码开头手动指定路径:
      import os
      os.add_dll_directory("D:\\ProgramData\\Anaconda3\\Library\\bin")
      
  3. 重装损坏的依赖包:若路径配置无误,可能是numba或llvmlite包损坏,执行以下命令重装:
    pip uninstall -y numba llvmlite
    pip install numba llvmlite
    
  4. 确保Pythonnet版本兼容:安装与Python3.9匹配的Pythonnet稳定版,执行:
    pip install pythonnet --upgrade
    

内容的提问来源于stack exchange,提问作者Rex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:31:01