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
相关文章:

Pythonnet能导入clr,但无法引入System模块?
【pythonnet详解】—— Python 和 .NET 互操作的库_pythonnet 详细使用-CSDN博客 Python中动态调用C#的dll动态链接库中方法_python 如何调用c# dll-CSDN博客 需求:Python调用并传List<float>类型参数给.Net 起初:直接 # 创建一个Python浮点数…...

媒体宣发套餐的概述及推广方法-华媒舍
在今天的数字化时代,对于产品和服务的宣传已经变得不可或缺。媒体宣发套餐作为一种高效的宣传方式,在帮助企业塑造品牌形象、扩大影响力方面扮演着重要角色。本文将揭秘媒体宣发套餐,为您呈现一条通往成功的路。 1. 媒体宣发套餐的概述 媒体…...

Windows和Linux C++判断磁盘空间是否充足
基本是由百度Ai写代码生成的,记录一下。实现此功能需要调用系统的API函数。 对于Windows,可调用函数GetDiskFreeSpaceEx,使用该函数需要包含头文件windows.h。该函数的原型: 它的四个参数: lpDirectoryName࿰…...
数据访问层如何提取数据到其他层,其他类中
当然可以,以下是一些具体的例子,展示了如何将数据库访问逻辑封装在一个单独的类中,并在其他类中使用这个类来获取数据。 数据库访问类(DatabaseAccess.java): java复制代码 import java.sql.*; import ja…...
【JS】AI总结:JavaScript中常用的判空方法
在JavaScript中,判空是一个常见的操作,因为变量可能未定义、未初始化或包含特定的空值。以下是JavaScript中常用的判空方法: 使用if语句直接判断: 如果变量是null、undefined、0、NaN、空字符串(""ÿ…...

Rust单元测试、集成测试
单元测试、集成测试 在了解了如何在 Rust 中写测试用例后,本章节我们将学习如何实现单元测试、集成测试,其实它们用到的技术还是上一章节中的测试技术,只不过对如何组织测试代码提出了新的要求。 单元测试 单元测试目标是测试某一个代码单…...

vue全局方法plugins/utils
一、在src目录下创建一个plugins文件夹 test.ts文件存放创建的方法,index.ts用于接收所有自定义方法进行统一处理 二、编写自定义方法 // test.ts文件 export default {handleTest(val1: number, val2: number) {// 只是一个求和的方法return val1 val2;}, };三…...

高阶算法班从入门到精通之路
课程介绍 本课程旨在帮助学员深入理解算法与数据结构的核心概念,从而掌握高级算法设计与分析技能。每集课程内容精心设计,涵盖了常用数据结构、经典算法及其应用场景等方面的深度讲解,同时通过大量实例演练,帮助学员提升解决实际…...
C++ 左值右值
文章目录 概述左值右值右值引用左值和右值的互换 小结 概述 左值和右值属于2中不同的表达式类型;它们在表达式中扮演不同的角色,特别是在赋值操作和函数参数传递中。 左值 定义:左值是指那些在内存中有确定位置的表达式,可以出…...

[数据集][目标检测]水面垃圾水面漂浮物检测数据集VOC+YOLO格式3749张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3749 标注数量(xml文件个数):3749 标注数量(txt文件个数):3749 标注…...

[深度学习] 卷积神经网络CNN
卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理数据具有类似网格结构的神经网络,最常用于图像数据处理。 一、CNN的详细过程: 1. 输入层 输入层接收原始数据,例如一张图像,它可以被…...
区别QPushButton和QToolButton
在刚开始学习Qt时,可能很难理解QPushButton和QToolButton之间的区别。 QToolButton通常用于QToolBar中,常常只显示图标,而不显示文本。那么,它们的主要区别是什么?什么时候应该使用QPushButton,什么时候应该使用QToolButton? 了解这一点很重要,这样我们才能选择最合适…...

【Python】已解决:TypeError: Object of type JpegImageFile is not JSON serializable
文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:TypeError: Object of type JpegImageFile is not JSON serializable 一、分析问题背景 在进行Python编程时,特别是处理图像数据和JSON序列化时&…...

超简单的nodejs使用log4js保存日志到本地(可直接复制使用)
引入依赖 npm install log4js 新建配置文件logUtil.js const log4js require(log4js);// 日志配置 log4js.configure({appenders: {// 控制台输出consoleAppender: { type: console },// 文件输出fileAppender: {type: dateFile,filename: ./logs/default, //日志文件的存…...

Python面试宝典第1题:两数之和
题目 给定一个整数数组 nums 和一个目标值 target,找出数组中和为目标值的两个数的索引。可以假设每个输入只对应唯一的答案,且同样的元素不能被重复利用。比如:给定 nums [2, 7, 11, 15] 和 target 9,返回 [0, 1],因…...
fastapi集成jwt
fastapi集成jwt fastapipython-jose实现jwt登录 1、安装相关包 python-jose pip install python-jose2、创建token及token校验 from copy import deepcopy from datetime import timedelta, datetimefrom jose import jwt, ExpiredSignatureErrorSECRET_KEY "xxx&quo…...

自定义一个背景图片的高度,随着容器高度的变化而变化,小于图片的高度时裁剪,大于时拉伸100%展示
1、通过js创建<image?>标签来获取背景图片的宽高比; 2、当元素的高度大于原有比例计算出来的高度时,背景图片的高度拉伸自适应100%,否则高度为auto,会自动被裁减 3、背景图片容器高度变化时,自动计算背景图片的…...

iPhone怎么恢复删除的数据?几款顶级iPhone数据恢复软件
从iOS设备恢复数据。 对于任何数据恢复软件来说,从iOS设备恢复数据都是一项复杂的任务,因为Apple已将众多数据保护技术集成到现代iPhone和iPad中。其中包括硬件加密和文件级加密。iOS 上已删除的数据只能通过取证文件工件搜索来找到,例如分析…...
macOS 上或linux安装 Jenkins
在 macOS 上使用 Docker 安装 Jenkins 的步骤如下: 安装 Docker: 如果尚未安装 Docker,请先从 Docker 官网下载并安装 Docker Desktop for Mac。 打开终端: 打开 macOS 上的终端应用程序。 拉取 Jenkins 镜像: 使用以下命令从 Docker Hub 拉取 Jenkins…...
axios发送数据的几种方式
axios 发送数据的几种方式 1、最简单的方式是将参数直接拼接在 URL 上,这通常用于传递少量的数据,例如资源的 ID。 const id 12; axios.delete(https://api.example.com/${id}).then(response > {console.log(Resource deleted successfully:, res…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...

系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...