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

使用Python.NET在.NET Framework 4.8中调用Python 3.11时遇DLL加载失败问题

问题分析与解决方案

核心原因

错误中的Win32Exception: %1 不是有效的 Win32 应用程序明确指向进程位数与Python DLL位数不匹配:你的.NET项目以AnyCPU模式编译,在部分环境下会以32位进程运行,但你安装的Python 3.11是64位版本(反之亦然),导致无法加载对应位数的python311.dll。

解决步骤

1. 确认Python的位数

打开Python终端,执行以下代码:

import sys
print(sys.maxsize > 2**32)
  • 输出True:Python是64位版本
  • 输出False:Python是32位版本

2. 修改.NET项目的编译平台

右键你的.NET Framework 4.8项目 → 属性 → 生成:

  • 将“平台目标”从AnyCPU改为与Python位数一致的选项(x64或x86)
  • 取消勾选“首选32位”(如果有该选项)

3. 修正代码中的初始化逻辑

你的代码缺少Python.NET必需的初始化调用,修正后的代码示例:

static void Main(string[] args)
{
    string pathToPython = @"C:\Users\John\AppData\Local\Programs\Python\Python311";
    string path = pathToPython + ";" + Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("PATH", path, EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("PYTHONHOME", pathToPython, EnvironmentVariableTarget.Process);
    
    var lib = new[]
    {
        @"C:\code\python scripts",
        @"C:\code\python scripts\.venv\Lib\site-packages",
        @"C:\code\python scripts\Lib",
        @"C:\code\python scripts\Lib\site-packages",
    };

    string paths = string.Join(";", lib);
    Environment.SetEnvironmentVariable("PYTHONPATH", paths, EnvironmentVariableTarget.Process);
    Runtime.PythonDLL = @"C:\Users\John\AppData\Local\Programs\Python\Python311\python311.dll";

    try
    {
        PythonEngine.Initialize(); // 必须添加的初始化步骤
        using (Py.GIL())
        {
            // 示例Python调用
            dynamic sys = Py.Import("sys");
            Console.WriteLine(sys.version);
            // 你的业务逻辑代码
        }
    }
    finally
    {
        PythonEngine.Shutdown(); // 程序结束时关闭Python引擎
    }
}

4. 额外验证

  • 确认python311.dll的路径真实存在,且位数与项目编译平台完全匹配
  • 若使用虚拟环境,确保PYTHONPATH包含虚拟环境的site-packages目录(示例中已修正路径)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:27:37