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

使用Python.Runtime从C#调用Python函数时提示No module named Numpy错误排查

解决C#通过Python.Runtime调用Python时找不到Numpy的问题

这种情况我碰到过好多次,核心问题基本都是C#进程没关联到你安装Numpy的那个Python环境,不是Numpy真的没装。下面给你拆解几个最常见的原因和解决办法:

1. Python环境路径没配置正确

Python.Runtime默认会找系统默认的Python解释器,但如果你是用虚拟环境、Anaconda或者自定义路径安装的Python,C#根本找不到你装了Numpy的那个环境。

解决办法是在初始化Python引擎前,手动指定Python的安装目录:

// 替换成你实际的Python安装目录(比如虚拟环境根目录、Anaconda目录)
string pythonHome = @"C:\Users\你的用户名\AppData\Local\Programs\Python\Python310";
PythonEngine.PythonHome = pythonHome;

// 把Python的DLL和Scripts目录加到系统PATH,确保能找到依赖
string originalPath = Environment.GetEnvironmentVariable("PATH");
Environment.SetEnvironmentVariable("PATH", $@"{pythonHome}\DLLs;{pythonHome}\Scripts;{originalPath}");

2. 虚拟环境没被正确识别

如果你用了虚拟环境,一定要让C#指向虚拟环境内的Python,而不是全局Python。比如你的虚拟环境在项目根目录的venv文件夹下,那PythonHome应该设为@".\venv",同时把venv\Scripts和venv\DLLs(如果有的话)加到PATH里。

3. 位数不匹配(最容易忽略的坑)

Python分32位和64位,C#项目的目标平台必须和Python完全一致!比如你装的是64位Python,但C#项目设成了x86,那加载的Python runtime是32位的,自然找不到64位环境下装的Numpy。

检查方法:

  • 打开Python控制台,输入import sys; print(sys.maxsize > 2**32),返回True就是64位,False是32位。
  • 在C#项目属性里,把“生成”选项卡的“平台目标”改成对应的位数(x64/x86)。

4. 包安装路径不在Python的搜索路径里

有时候你用pip install numpy是装在用户目录的site-packages里,而Python.Runtime调用的Python解释器没把这个路径加入搜索列表。可以在初始化后手动添加:

using (Py.GIL())
{
    // 把用户目录的site-packages路径加到sys.path
    dynamic sys = Py.Import("sys");
    sys.path.Append(@"C:\Users\你的用户名\AppData\Roaming\Python\Python310\site-packages");
    
    // 再导入numpy试试
    dynamic numpy = Py.Import("numpy");
}

验证小技巧

先在命令行里运行where python,找到你装了Numpy的那个Python路径,然后在C#里把这个路径对应的目录设为PythonHome。同时在该路径下运行pip list,确认Numpy确实存在。

最后给你一个完整的测试代码示例:

using Python.Runtime;
using System;

class PythonCallTest
{
    static void Main(string[] args)
    {
        // 替换为你的Python环境路径
        string pythonHome = @"C:\ProgramData\Anaconda3";
        PythonEngine.PythonHome = pythonHome;

        // 更新PATH
        string path = Environment.GetEnvironmentVariable("PATH");
        Environment.SetEnvironmentVariable("PATH", $@"{pythonHome}\DLLs;{pythonHome}\Scripts;{path}");

        // 初始化Python引擎
        PythonEngine.Initialize();

        try
        {
            using (Py.GIL())
            {
                dynamic numpy = Py.Import("numpy");
                Console.WriteLine($"成功加载Numpy,版本:{numpy.__version__}");
            }
        }
        catch (PythonException ex)
        {
            Console.WriteLine($"调用出错:{ex.Message}");
        }
        finally
        {
            PythonEngine.Shutdown();
        }

        Console.ReadKey();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:08:57