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

在无Python环境的C#项目中嵌入Python库(SciPy)的问题求助

解决Pythonnet加载本地Python库的问题

步骤1:准备本地Python库文件

  • 在本地安装与python311.dll版本完全匹配的Python 3.11环境,通过pip安装numpy、scipy及所有依赖库。
  • 找到Python安装目录下的Lib\site-packages文件夹,将其中的numpy、scipy文件夹,以及它们依赖的第三方库(如mkl_*、pyparsing等)复制到你的C#解决方案目录下的自定义文件夹(比如命名为PythonLibs)。

步骤2:在C#代码中配置Python模块搜索路径

在初始化Pythonnet引擎后,手动将本地库目录添加到Python的模块搜索路径中,示例代码如下:

using Python.Runtime;
using System;

class Program
{
    static void Main(string[] args)
    {
        // 指定本地python311.dll的路径
        Runtime.PythonDLL = @"./python311.dll";

        // 初始化Python运行时
        PythonEngine.Initialize();

        try
        {
            // 获取Python的sys模块
            dynamic sys = Py.Import("sys");
            // 将本地库目录添加到模块搜索路径
            sys.path.Append(@"./PythonLibs");

            // 尝试导入numpy验证
            dynamic np = Py.Import("numpy");
            Console.WriteLine($"Numpy导入成功,版本:{np.__version__}");
            
            // 导入scipy
            dynamic scipy = Py.Import("scipy");
            Console.WriteLine($"Scipy导入成功,版本:{scipy.__version__}");
        }
        catch (PythonException ex)
        {
            Console.WriteLine($"导入失败:{ex.Message}");
        }
        finally
        {
            // 关闭Python引擎
            PythonEngine.Shutdown();
        }
    }
}

注意事项

  • 确保复制的所有库版本与python311.dll的Python版本完全一致,否则会出现兼容性错误。
  • 部分库依赖原生DLL文件(如numpy的_multiarray_umath.pyd依赖的MKL动态库),需要将这些DLL一并复制到C#程序的运行目录下。
  • 部署时,需将python311.dll、PythonLibs文件夹及C#编译后的程序文件一起打包分发。

替代方案:使用嵌入式Python包

  • 从Python官网下载对应版本的嵌入式Python包(如Python 3.11 Embedded Package),解压到解决方案目录。
  • 打开命令行,进入嵌入式Python目录,执行命令安装所需库到本地:
    .\python.exe -m pip install numpy scipy --target .\Lib\site-packages
    
  • 在C#代码中,将Runtime.PythonDLL指向嵌入式Python的python311.dll,并将嵌入式Python的Lib\site-packages路径添加到sys.path,这种方式能更完整地包含所有依赖,减少遗漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:40:08