在pythonnet中添加/查找nuget包的更简单方法?

2024-10-04 05:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从Python调用我的C#程序集。 Python是3.9.7。net是.NET5

由于当前的pythonnet版本不支持这个版本,所以我选择了master,原则上它可以工作

我的问题是我有一堆nuget软件包。 enter image description here

而Python并没有找到它们。这将导致行中出现一般性的“未找到模块XYZ”错误 from XYZ import Foobar(例如Newtonsoft.Json) 或者Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=5.0.0.0, ...例如

我真的必须搜索光盘上的每个nuget包并添加吗

  • sys.path.append("C:\\Users\\xyz\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\5.0.2\\lib\\net5.0")
  • clr.AddReference("Microsoft.Extensions.DependencyInjection")

还是有更简单的方法

也许我在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

以及runtimeconfig.json

{
  "runtimeOptions": {
    "tfm": "net5.0",
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "5.0.0"
    }
  }
}

Tags: fromimport版本getsysextensionsnugetmicrosoft