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

在.NET Core3.1 WPF中调用Python3.8模块遇System.DllNotFoundException错误求助

解决.NET Core 3.1 WPF调用Python 3.8模块时的DllNotFoundException

核心问题排查与修复步骤:

  1. 修正PYTHONNET_PYDLL环境变量
    你当前设置的PYTHONNET_PYDLL指向Python安装目录,这是错误的,必须指定具体的Python动态链接库路径:

    Environment.SetEnvironmentVariable("PYTHONNET_PYDLL", Path.Combine(pyInstallDir, "python38.dll"), EnvironmentVariableTarget.Process);
    
  2. 正确设置PATH环境变量(避免覆盖原有路径)
    直接替换PATH会导致系统丢失其他必要依赖路径,应采用追加方式:

    string existingPath = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("PATH", $"{pyInstallDir};{Path.Combine(pyInstallDir, @"DLLs")};{existingPath}", EnvironmentVariableTarget.Process);
    

    额外添加DLLs目录是为了确保Python的依赖库能被正确加载。

  3. 确认Python.Runtime.dll的兼容性

    • 确保引用的Python.Runtime.dll是通过pip install pythonnet为Python3.8安装的版本,路径为C:\Python38\Lib\site-packages\Python.Runtime.dll
    • 检查项目平台目标:若Python是64位,将WPF项目的平台目标设为x64(右键项目→属性→生成→平台目标),禁止使用Any CPU——pythonnet不支持跨位调用。
  4. 初始化Python.Runtime的正确流程
    在使用Py.GIL()之前必须先初始化Python运行时,添加完整流程代码:

    // 应用启动时执行一次初始化
    PythonEngine.Initialize();
    try
    {
        using (Py.GIL()) 
        { 
            dynamic np = Py.Import("numpy");
            // 可添加测试代码验证,比如打印numpy版本
            Console.WriteLine(np.__version__);
        }
    }
    finally
    {
        // 应用退出时关闭Python引擎(建议执行)
        PythonEngine.Shutdown();
    }
    
  5. 验证numpy的安装有效性
    确保numpy已正确安装到Python3.8环境,打开命令行执行:

    C:\Python38\python.exe -c "import numpy; print(numpy.__version__)"
    

    若报错,先修复numpy安装:

    C:\Python38\Scripts\pip.exe install numpy
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:55:22