Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 1683|Svar: 4

[Källa] .NET/C# anropar Python-miljön för att köra .py skript

[Kopiera länk]
Publicerad den 2025-2-11 16:01:21 | | | |
Krav: Python-programmering är mycket populärt nuförtiden, används i stor utsträckning inom dataanalys och vetenskaplig forskning, stora modeller, djupinlärning med mera, vissa modellalgoritmer är skrivna i python och kräver .NET för att köra pythonskript, skicka parametrar och få resultat. De onlinebaserade lösningarna är: processexekvering, IronPython, pythonnet och slutligen pythonnet.

pythonnet-Python.NET

Python.NET är ett mjukvarupaket som gör det möjligt för Python-programmerare att integrera .NET Universal Language Runtime (CLR) nästan sömlöst och ger .NET-utvecklare kraftfulla applikationsskriptverktyg. Den tillåter Python-kod att interagera med CLR och kan även användas för att bädda in Python i .NET-applikationer.

Adress:Inloggningen med hyperlänken är synlig.

Förbered Python-miljön

Denna artikel använder python-3.13.2-embed-amd64 som körmiljö, referens:

Python-inbäddningspaket installerar paket med pip
https://www.itsvse.com/thread-10941-1-1.html

Python-3.13.2 inbäddningspaket 64-bitars nedladdning:Inloggningen med hyperlänken är synlig.

Skapa en ny .NET 8-konsol

Skapa en ny .NET 8-konsolreferens med följande referens:

Eftersom pythonnet kommer att användaBinärFormatteringklass, kommer följande undantag att kastas under utförandet:

Undantag för ohanterad användning. System.NotSupportedException: BinaryFormatter-serialisering och deserialisering är inaktiverade i denna applikation. SeInloggningen med hyperlänken är synlig.för mer information.

För att lösa problemet, redigera .csproj-noden <PropertyGroup> och lägg till följande konfiguration:

Den fullständiga konfigurationen är följande:

Py.GIL() är en viktig funktion i Python.NET biblioteket för att erhålla och släppa Global Interpreter Locks (GILs). GIL är en mekanism i CPython-tolken som säkerställer att endast en tråd exekverar Python-bytekod åt gången. Detta är viktigt i en multitrådad miljö, särskilt om Python- och .NET-kod blandas ihop.

Pythons flytteltyp är faktiskt en dubbelprecisionsflyttil (64 bitar), vilket motsvarar C#:s dubbeltyp.

Exekvera pythonkod direkt

För enkel pythonkod, som kan köras direkt, är koden följande:



Kalla en pythonfunktion

Koden är följande:



Distribuera till Linux-miljön för testning

Tillgängliga för normal drift är testerna följande:



Hänvisning:
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.




Föregående:Linux använder pyenv för att installera Python-miljön
Nästa:Angular 18-serien (Thirty-One) VS Code Development Assistance Plugin
 Hyresvärd| Publicerad den 2025-2-11 16:08:17 |
Kalla en pythonfunktion med en listarray (<klass 'list'>) som argument


Koden är följande:


 Hyresvärd| Publicerad den 2025-2-11 16:25:40 |
C# anropar en pythonfunktion för att få tuple-<klassen 'tuple'> return-värdet

Koden är följande:



 Hyresvärd| Publicerad den 2025-2-24 09:27:40 |
CSnakes- Ett verktyg för att bädda in Python-kod i .NET-projekt

Källa:Inloggningen med hyperlänken är synlig.
Dokumentation:Inloggningen med hyperlänken är synlig.
 Hyresvärd| Publicerad den 2025-9-1 16:01:12 |
Kompiliera till bytekodskörning

Hänvisning:Inloggningen med hyperlänken är synlig.
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com