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

VB.net中使用PythonNet初始化Python引擎报错的解决方法

PythonNet在VB.NET中初始化报错的解决方法

问题描述

尝试使用PythonNet在VB.NET中执行Python脚本时,在PythonEngine.Initialize()行触发错误:

System.TypeInitializationException: 'The type initializer for 'Delegates' threw an exception.'

已尝试调整路径正反斜杠、使用指定python310.dll的Initialize重载,但问题未解决。代码示例如下:

Imports Python.Runtime

Public Class Form1    
     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Runtime.PythonDLL = "C:\Users\realt\anaconda3\python310.dll"
        PythonEngine.Initialize()
        Using Py.GIL()
            Dim np As Object = Py.Import("numpy")
            TextBox3.Text = ToString(np.cos(np.pi * 2))
        End Using
    End Sub
End Class

注:代码由pythonnet官方C#示例转换为VB.NET版本。

解决步骤

  • 匹配项目与Python架构
    检查VB.NET项目的目标平台(x86/x64)是否与Anaconda Python的架构一致。在Visual Studio中右键项目→属性→生成→平台目标,选择对应架构(如Anaconda是64位则选x64)。

  • 配置Python环境变量
    在PythonEngine.Initialize()前添加环境变量配置,确保PythonNet能正确识别环境:

    Environment.SetEnvironmentVariable("PYTHONHOME", "C:\Users\realt\anaconda3")
    Environment.SetEnvironmentVariable("PYTHONPATH", "C:\Users\realt\anaconda3\Lib;C:\Users\realt\anaconda3\Lib\site-packages")
    
  • 验证pythonnet版本兼容性
    确保安装的pythonnet版本支持Python 3.10。可通过NuGet为项目安装对应版本,或激活Anaconda环境后执行pip install pythonnet安装适配版本。

  • 添加Python目录到系统PATH
    在设置Runtime.PythonDLL后,将Python DLL所在目录添加到PATH,避免依赖加载失败:

    Dim pythonDir As String = System.IO.Path.GetDirectoryName(Runtime.PythonDLL)
    Environment.SetEnvironmentVariable("PATH", $"{pythonDir};{Environment.GetEnvironmentVariable("PATH")}")
    
  • 确保引擎初始化唯一性
    避免多次调用PythonEngine.Initialize(),若之前初始化失败,可在重启初始化前调用PythonEngine.Shutdown()(仅在已初始化的情况下执行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:35:08