首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pythonnet使用System.Text.Json

pythonnet使用System.Text.Json
EN

Stack Overflow用户
提问于 2022-01-27 17:21:55
回答 1查看 242关注 0票数 0

我试图使用依赖于.NET6的System.Text.Json库,该库无法使用pythonnet导入:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ModuleNotFoundError: No module named 'System'

在python中,检查pythonnet默认添加的程序集,可以看到它没有随加载的System.Text.Json命名空间一起发布:

代码语言:javascript
运行
复制
import clr
print("[", ", ".join(clr.ListAssemblies(False)), "]")

产出:

代码语言:javascript
运行
复制
[ mscorlib, clrmodule, Python.Runtime, System.Core, System.Configuration, System.Xml, System, __CodeGenerator_Assembly, e__NativeCall_Assembly ]

然后我尝试添加System.Text.Json,它似乎成功了:

代码语言:javascript
运行
复制
import clr
import sys

DOTNET_PATH: str = {YOUR PATH TO .NET6 DLLs}
sys.path.append(DOTNET_PATH)

clr.AddReference("System.Text.Json")
print("[", ", ".join(clr.ListAssemblies(False)), "]")

产出:

代码语言:javascript
运行
复制
[ ..., System, System.Text.Json, System.Runtime, ... ]

但是,尝试从命名空间导入类:

代码语言:javascript
运行
复制
from System.Text.Json import JsonDocument

继续提出:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
ModuleNotFoundError: No module named 'System'

(我还尝试添加了随.dll 6.0.1附带的每一个.NET,但都没有成功)

为了成功地从这个命名空间导入,我还需要使用其他机制吗?(及相关)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-27 19:22:59

要使用.NET核心/.NET 5+程序集,您需要pythonnet3.0.0或更高版本(目前正在预览中)。

还需要显式加载coreclr:

代码语言:javascript
运行
复制
from clr_loader import get_coreclr
from pythonnet import set_runtime

coreclr = get_coreclr("/full/path/to/app.runtimeconfig.json")
set_runtime(coreclr)

// here goes the rest of your code

runtimeconfig.json文件是由dotnet publish创建的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70882963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档