使用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
疑问与解决需求
- Anaconda3是否默认包含VectorBT包?
- 请提供上述错误的解决建议
解决建议
关于Anaconda3与VectorBT的关系
- Anaconda3默认不包含VectorBT包,需手动安装,可选择以下方式:
- Conda安装:
conda install -c conda-forge vectorbt - Pip安装:
pip install vectorbt(需确保在Anaconda目标环境中执行)
- Conda安装:
WinError 87错误的修复步骤
该错误由llvmlite加载DLL路径时参数异常导致,常见于Pythonnet跨环境调用场景,可按以下步骤排查:
- 确认Python环境路径正确性:在C#初始化PythonEngine时,明确指定Anaconda的安装目录为PythonHome,示例代码:
PythonEngine.PythonHome = @"D:\ProgramData\Anaconda3"; PythonEngine.Initialize(); - 手动添加DLL目录:
- 将Anaconda的
Library\bin路径(D:\ProgramData\Anaconda3\Library\bin)添加到系统环境变量PATH中,添加后重启Visual Studio。 - 或在被调用的Python代码开头手动指定路径:
import os os.add_dll_directory("D:\\ProgramData\\Anaconda3\\Library\\bin")
- 将Anaconda的
- 重装损坏的依赖包:若路径配置无误,可能是numba或llvmlite包损坏,执行以下命令重装:
pip uninstall -y numba llvmlite pip install numba llvmlite - 确保Pythonnet版本兼容:安装与Python3.9匹配的Pythonnet稳定版,执行:
pip install pythonnet --upgrade
内容的提问来源于stack exchange,提问作者Rex
相关产品推荐
相关产品推荐

