Pythonnet能导入clr,但无法引入System模块?

【pythonnet详解】—— Python 和 .NET 互操作的库_pythonnet 详细使用-CSDN博客 

Python中动态调用C#的dll动态链接库中方法_python 如何调用c# dll-CSDN博客

需求:Python调用并传List<float>类型参数给.Net 

 起初:直接  # 创建一个Python浮点数列表 py_float_list = [0.23, 0.34, 0.45],但是报错

def callCS(model_url, methodName, argsType, argsVal, returnType, addition):# 找到c#程序集clr.FindAssembly(model_url)# 解析参数获取命名空间、类名和判断是否为静态方法的标识namespace, className, static = parseAddition(addition)# 解析参数argsParsedArr = parsePyArgs(argsVal, argsType)print(argsParsedArr)# 创建一个Python浮点数列表py_float_list = [0.23, 0.34, 0.45]listValue= py_float_list# 设置模块【命名空间】dll = clr.AddReference(namespace)## #从指定命名空间导入类# # from ClassLibrary1 import TestCsharp#动态导入模块module_1 = importlib.import_module(namespace)#获取命名下的指定类class_1 = getattr(module_1, className)#判断是否为静态方法if static == '1':method2 = getattr(class_1, methodName)# 调用静态方法并打印print(method2(argsParsedArr[0],listValue))else:# 实例化my_instance = class_1()# 获取非静态方法method1 = getattr(my_instance, methodName)# 调用非静态方法并打印print(method1(*argsParsedArr))

Python.Runtime.PythonException: 'list' value cannot be converted to System.Collections. Generic.List`1[System.Single],大概可以理解为python中list无法转化为.Net中List<T>[T为泛型]

然后,根据网上博客和AI工具推荐:

在Python中,你需要导入C# DLL,并使用pythonnet提供的机制来调用C#方法。但是,由于pythonnet不直接支持C#的泛型列表,你需要将Python列表转换为C#可以理解的数组或其他集合类型。

import clr  
# 加载C# DLL,假设DLL名为MyCSharpLibrary.dll,并且位于当前工作目录  
clr.AddReference('MyCSharpLibrary')  
from MyCSharpLibrary import MyCSharpClass  # 创建一个Python浮点数列表  
py_float_list = [1.23, 2.34, 3.45]  # 将Python列表转换为C#可以理解的数组(这里我们使用float数组)  
float_array = (clr.Convert(item, System.Single) for item in py_float_list)  
float_list = System.Array[System.Single](list(float_array))  # 调用C#方法,传递float数组(或转换为List<float>,如果需要)  
MyCSharpClass.ProcessFloatList(float_list)  # 注意:如果C#方法期望List<float>而不是数组,你可能需要创建一个List并填充它  
# float_list_csharp = System.Collections.Generic.List[System.Single]()  
# for item in py_float_list:  
#     float_list_csharp.Add(clr.Convert(item, System.Single))  
# MyCSharpClass.ProcessFloatList(float_list_csharp)---------------------------------------------------------------------------import clr  # 加载C# DLL  
clr.AddReference('MyCSharpLibrary')  
import MyCSharpLibrary  # 创建一个Python浮点数列表  
py_float_list = [1.23, 2.34, 3.45]  # 将Python列表转换为C# float数组  
float_array = System.Array[System.Single](py_float_list)  # 注意这里直接使用py_float_list可能不起作用  
# 正确的做法是使用列表推导式或循环来转换每个元素  
float_array = (System.Single(x) for x in py_float_list)  
float_array = System.Array[System.Single](list(float_array))  # 将生成器转换为列表,再转换为数组  # 调用C#方法,传递float数组  
MyCSharpLibrary.MyCSharpClass.ProcessFloatArray(float_array)

此时报错,无法导入System模块(.Net系统工作空间) ,然后在网上看到博客(试了无效):

看来官方文档,的确试可以导入System命名空间,是不是python、pythonnet、.net版本不匹配或者环境变量设置不正确(待查借助官方文档!!) 

pythonnet官方文档 :https://pythonnet.github.io/pythonnet/python.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/39103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Altium】如何处理PCB上所有焊盘被误盖油

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决焊盘被误盖油的操作 2、 问题场景 所有焊盘都可以设置为盖油或不盖油&#xff0c;由于焊盘需要用来焊接元器件&#xff0c;所以都不会设置盖油。由于误操作或者创建封装时设置错误&#xff0c;造成一定数量的焊盘…

“论单元测试方法及应用”写作框架,软考高级论文,系统架构设计师论文

论文真题 1、概要叙述你参与管理和开发的软件项目,以吸你所担的主要工作。 2、结给你参与管理和开发的软件项目&#xff0c;简要叙述单元测试中静态测试和动态测试方法的基本内容。 3、结给你惨与管理和研发的软件项目,体阐述在玩测试过程中,如何确定白盒测试的覆盖标准,及如…

Hadoop权威指南-读书笔记-01-初识Hadoop

Hadoop权威指南-读书笔记 记录一下读这本书的时候觉得有意思或者重要的点~ 第一章—初识Hadoop Tips&#xff1a; 这个引例很有哲理嘻嘻&#x1f604;&#xff0c;道出了分布式的灵魂。 1.1 数据&#xff01;数据&#xff01; 这一小节主要介绍了进入大数据时代&#xff0c;面…

方正小标宋简体、仿宋GB2312、楷体GB2312字体

文章目录 下载地址所有的文件wps使用方正小标宋简体、仿宋GB2312、楷体GB2312 字体用途方正小标宋简体仿宋GB2312楷体GB2312 下载地址 【金山文档 | WPS云文档】 方正小标宋简体、仿宋GB2312、楷体GB2312 https://kdocs.cn/l/cksgHDLneqDk 所有的文件 wps使用 方正小标宋简体…

IoTDB Committer+Ratis PMC Member:“两全其美”的秘诀是?

IoTDB & Ratis 双向深耕&#xff01; 还记得一年前我们采访过拥有 IoTDB 核心研发 Ratis Committer “双重身份”的社区成员宋子阳吗&#xff1f;&#xff08;点此阅读&#xff09; 我们高兴地发现&#xff0c;一年后&#xff0c;他在两个项目都更进一步&#xff0c;已成为…

Vue 结合 Element-UI ,管理系统快速生成指南(一)

前言 Element UI 作为一个基于 Vue.js 的 UI 组件库,提供了丰富的界面元素和交互组件,大大提高了开发效率。结合这两大前端技术栈,开发者能够快速搭建出一个功能强大、界面优雅的管理系统。 由于管理系统实现流程还是相对较多&#xff0c;所以分几篇文章进行讲解 本章主要先…

TCP单进程循环服务器程序与单进程客户端程序

实验目的 理解并掌握以下内容: 网络进程标识(即套接字地址)在Linux中的数据结构与地址转换函数。网络字节序与主机字节序的定义、转换以及相关函数在网络编程中的应用。数据结构内存对齐的基本规则,以及基于数据结构构建PDU的基本方法。TCP单进程循环服务器与单进程客户端的…

电影交流平台小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;电影类型管理&#xff0c;留言反馈管理&#xff0c;电影中心管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;电影中心&#xff0c;留言反馈 开发系统&#xff1a;Window…

kvm虚拟机启用console登录

kvm虚拟机console登录&#xff0c;就是执行 virsh console 的时候&#xff0c;宿主机可以控制虚拟机。 一、centos7的kvm虚拟机开启console登录&#xff08;在虚拟中操作&#xff09; 1、备份文件 [roothadoop51 ~]# cp /etc/grub2.cfg /etc/grub2.cfg_back 2、用下面命令可…

Git 命令学习之推送本地项目到 Gitee 托管

引言 在软件开发中&#xff0c;版本控制是不可或缺的一环。Git 作为目前最流行的分布式版本控制系统&#xff0c;广泛应用于各种项目中。而 Gitee&#xff08;原名码云&#xff09;作为国内知名的代码托管平台&#xff0c;为开发者提供了稳定、安全的代码托管服务。下面将详细…

mysql mgr集群断电重启

一、前言 mysql mgr集群所有节点都断电重启时&#xff0c;就会面临一个问题&#xff0c;应该怎么重新构建mgr集群 二、操作 查询所有节点的master状态 show master status; 查看同步状态&#xff0c;可以通过uuid知道是通过哪个节点进行同步的数据 查看所有节点的uuid&#x…

【工具推荐】Clink

文章目录 Clink介绍Clink安装删除版权信息 Clink介绍 Clink 是一个工具&#xff0c;它将 GNU Readline 库的强大命令行编辑功能与 Windows 原生的 cmd.exe 命令提示符结合在一起。Readline 是 Bash shell 中众所周知的库&#xff0c;Bash 是许多 Linux 发行版的标准 shell。通…

基于C语言+控制台的学生信息管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、Php、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

备份SQL Server数据库并还原到另一台服务器

我可以将SQL Server数据库备份到另一台服务器吗&#xff1f; 有时您可能希望将 SQL数据库从一台服务器复制到另一台服务器&#xff0c;或者将计算机复制到计算机。可能的场景包括测试、检查一致性、从崩溃的机器恢复数据库、在不同的机器上处理同一个项目等。 是的&#xff0c…

【嵌入式】探索嵌入式世界:在ARM上构建俄罗斯方块游戏的奇妙之旅

文章目录 前言&#xff1a;1. 简介2. 总体设计思路及功能描述2.1 设计思路2.2 功能描述2.3 程序流程图 3. 各部分程序功能及详细说明3.1 游戏界面函数3.1.1 游戏界面中的图片显示3.1.2 游戏开始界面3.1.3 游戏主界面3.1.4 游戏结束广告界面3.1.5 游戏界面中的触摸反馈3.1.6 游戏…

C++11新特性【下】

一、lambda表达式 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0c;可以使用std::sort方法。如果待排序元素为自定义类型&#xff0c;需要用户定义排序时的比较规则&#xff0c;随着C语法的发展&#xff0c;人们开始觉得上面的写法太复杂了&#xff0c…

化身李时珍弟子,演绎中医药故事,李良济花神戏,创新传承中医药文化

6月29日&#xff0c;李良济与花神戏联袂举办的儿童剧本&#xff0c;在李良济嵩山店强势开启。 20余名小朋友&#xff0c;一起在这次中医药儿童剧本活动中&#xff0c;化身李时珍弟子&#xff0c;学中医&#xff0c;识草药&#xff0c;传承中医智慧&#xff0c;沉浸式学习传统文…

关于一维,二维正态分布的绘制

绘制一维正态分布代码 % 给定的均值和标准差 mu 0; % 例如&#xff0c;你可以改变这个值 sigma 1; % 例如&#xff0c;你可以改变这个值 % 定义x的范围&#xff08;例如&#xff0c;从mu-3*sigma到mu3*sigma&#xff0c;步长为0.1&#xff09; x mu - 3*sigma:0.1:m…

STM32 中断编程入门

目录 一、中断系统 1、中断的原理 2、中断类型 外部中断 定时器中断 DMA中断 3、中断处理函数 中断标志位清除 中断服务程序退出 二、实际应用 中断控制LED 任务要求 代码示例 中断控制串口通信 任务要求1 代码示例 任务要求2 代码示例 总结 学习目标&…

ROS学习笔记(17):建图与定位(1)

目录 0.前言 1.定位和建图 1.里程计&#xff08;Odometry&#xff09; 2.扫描匹配&#xff08;Scan Matching&#xff09; 3.结尾 0.前言 好久不见各位&#xff0c;前段时间忙着考试&#xff08;6级和一些专业课&#xff09;和摆烂断更了近30天&#xff0c;现在哥们回来更…