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

Python3.9.7+.NET5环境下pythonnet添加/查找NuGet包的简便方法

pythonnet调用.NET 5 NuGet包加载失败解决方案

核心结论

不需要手动逐个查找NuGet包路径添加,可通过以下几种更简便的方式解决两类加载报错问题:

  • 方案1:统一收集所有依赖程序集到单目录
    新建一个.NET 5类库项目,在项目中安装所有你需要用到的NuGet包,执行dotnet publish -c Release命令,将发布输出目录下的所有dll文件统一放在一个文件夹中,Python初始化时只需要将这个文件夹路径添加到sys.path即可,运行时会自动扫描该目录下的所有程序集,不需要逐个添加每个NuGet包的单独路径。
    优化后的Python初始化代码示例:

    from clr_loader import get_coreclr
    from pythonnet import set_runtime
    
    rt = get_coreclr("c:\\Temp\\runtimeconfig.json")
    set_runtime(rt)
    
    import clr
    import sys
    # 仅需添加发布后的dll统一目录
    sys.path.append("C:\\your_publish_dll_folder")
    
  • 方案2:通过runtimeconfig.json配置全局包探测路径
    直接在你的runtimeconfig.json中添加additionalProbingPaths配置,将本地NuGet全局包缓存路径、自定义包源路径都加入进去,.NET运行时会自动在这些路径下查找匹配版本的程序集,不需要手动调用sys.path.append添加单个包路径。
    修改后的runtimeconfig.json示例:

    {
      "runtimeOptions": {
        "tfm": "net5.0",
        "framework": {
          "name": "Microsoft.NETCore.App",
          "version": "5.0.0"
        },
        "additionalProbingPaths": [
          "C:\\Users\\xyz\\.nuget\\packages",
          "C:\\your_custom_nuget_source_path"
        ]
      }
    }
    
  • 简化程序集引用操作
    你可以把所有需要加载的程序集名整理成一个列表,循环调用clr.AddReference即可,不需要逐行写引用代码:

    # 批量添加引用
    asm_list = ["Newtonsoft.Json", "Microsoft.Extensions.DependencyInjection", "Microsoft.Extensions.DependencyInjection.Abstractions"]
    for asm in asm_list:
        clr.AddReference(asm)
    
    # 之后再执行导入操作
    from Newtonsoft.Json import JsonConvert
    from Microsoft.Extensions.DependencyInjection import ServiceCollection
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 07:45:00