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.pswp.cn/diannao/39103.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39103.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39103.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Altium】如何處理PCB上所有焊盤被誤蓋油

【更多軟件使用問題請點擊億道電子官方網站】 1、 文檔目標 解決焊盤被誤蓋油的操作 2、 問題場景 所有焊盤都可以設置為蓋油或不蓋油&#xff0c;由于焊盤需要用來焊接元器件&#xff0c;所以都不會設置蓋油。由于誤操作或者創建封裝時設置錯誤&#xff0c;造成一定數量的焊盤…

“論單元測試方法及應用”寫作框架,軟考高級論文,系統架構設計師論文

論文真題 1、概要敘述你參與管理和開發的軟件項目,以吸你所擔的主要工作。 2、結給你參與管理和開發的軟件項目&#xff0c;簡要敘述單元測試中靜態測試和動態測試方法的基本內容。 3、結給你慘與管理和研發的軟件項目,體闡述在玩測試過程中,如何確定白盒測試的覆蓋標準,及如…

IT行業:現狀、未來與無限可能

隨著技術的不斷進步&#xff0c;IT行業已成為推動全球經濟和社會發展的關鍵力量。從云計算、大數據、人工智能到物聯網、5G通信和區塊鏈&#xff0c;這些技術正在重塑我們的生活和工作方式。作為當今全球經濟和社會發展的核心驅動力&#xff0c;IT行業正經歷著前所未有的變革與…

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使用 方正小標宋簡體…

監聽 web 容器內的網絡請求

需求 iOS 項目中 wkwebview 實現的 web 容器&#xff0c;需要監聽 web 容器內的所有網絡請求 實現 在 iOS 項目中使用 WKWebView 實現的 Web 容器&#xff0c;監聽 Web 容器內的網絡請求是一個常見需求。可以通過實現 WKURLSchemeHandler 協議來處理自定義的 URL scheme&#…

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;能夠為學生提供各類…

macOS如何查看終端的shell類型

在macOS中&#xff0c;可以通過幾種方式來查看終端&#xff08;Terminal&#xff09;的shell類型。 使用echo命令 打開終端&#xff0c;輸入以下命令&#xff1a; echo $SHELL這將顯示當前使用的shell&#xff0c;例如 /bin/bash 或 /bin/zsh。 查看ps1環境變量 在終端輸入…

大廠面試經典高階SQL題--次日留存率

為什么寫這么一篇文章呢&#xff0c;因為在之前的基金公司面試&#xff0c;1/50的錄取幾率&#xff0c;很榮幸自己可以打敗這么多候選人&#xff0c;被上海著名某基金公司錄取。有一大半人卡在了筆試環節&#xff0c;就說我自個廠商招的一群小伙伴&#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…