この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 1683|答える: 4

[出典] .NET/C# は Python 環境を呼び出して.pyスクリプトを実行します

[リンクをコピー]
2025年2月11日 16:01:21に投稿 | | | |
要件:Pythonプログラミングは現在非常に人気があり、データ分析や科学研究、大規模モデル、ディープラーニングなどで広く使われています。一部のモデルアルゴリズムはPythonで書かれており、.NETを使ってPythonスクリプトを実行し、パラメータを渡し、結果を得る必要があります。 オンラインソリューションは、プロセス実行、IronPython、pythonnet、そして最後にpythonnetです。

pythonnet-Python.NET

Python.NET は、Pythonプログラマーが.NETユニバーサルランテーションランタイム(CLR)をほぼシームレスに統合できるようにし、.NET開発者に強力なアプリケーションスクリプトツールを提供するソフトウェアパッケージです。 これによりPythonコードがCLRとやり取りでき、.NETアプリケーションにPythonを埋め込むことも可能です。

住所:ハイパーリンクのログインが見えます。

Python環境の準備

この記事は実行環境としてpython-3.13.2-embed-amd64を使用しています。参考文献:

Pythonの埋め込みパッケージはpipを使ってパッケージをインストールします
https://www.itsvse.com/thread-10941-1-1.html

Python-3.13.2 埋め込みパッケージ 64ビットダウンロード:ハイパーリンクのログインが見えます。

新しい.NET 8コンソールを作成する

以下の参照で新しい.NET 8コンソール参照を作成します:

pythonnetはバイナリフォーマタークラスでは、実行中に以下の例外がスローされます:

未処理例外。 System.NotSupportedException: このアプリケーション内でBinaryFormatterのシリアライズおよびデシリアライズは無効化されています。 見るハイパーリンクのログインが見えます。詳細はこちらをご覧ください。

問題を解決するために、.csprojノードを編集<PropertyGroup>し、以下の構成を追加します。

完全な構成は以下の通りです:

Py.GIL()は、グローバルインタプリタロック(GIL)の取得および解放に使うための Python.NET ライブラリにおける重要な機能です。 GILはCPythonインタプリタ内の仕組みで、常に1つのスレッドだけがPythonバイトコードを実行していることを保証します。 これは特にPythonと.NETコードを混ぜているマルチスレッド環境で重要です。

Pythonのfloat型は実際にはダブル精度のfloat(64ビット)であり、C#のダブル型に対応しています。

Pythonコードを直接実行する

直接実行可能なシンプルなPythonコードの場合、コードは以下の通りです:



Python関数を呼び出します

コードは以下の通りです:



Linux環境へのデプロイでテストを行ってください

通常運転可能なテストは以下の通りです:



参考:
ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。




先の:LinuxはPython環境をインストールするためにpyenvを使用しています
次に:Angular 18シリーズ(31)VS コード開発支援プラグイン
 地主| 2025年2月11日 16:08:17に投稿 |
Python関数を呼び出し、引数としてlist配列(<class 'list'>)を呼び出します


コードは以下の通りです:


 地主| 2025年2月11日 16:25:40に投稿 |
C#はpython関数を呼び出してタプル<class 'tuple'>の返り値を取得します

コードは以下の通りです:



 地主| 2025年2月24日 09:27:40に投稿 |
Cスネーク- .NETプロジェクトにPythonコードを埋め込むためのツール

源:ハイパーリンクのログインが見えます。
ドキュメンテーション:ハイパーリンクのログインが見えます。
 地主| 2025年9月1日 16:01:12に投稿 |
バイトコードへのコンパイル実行

参考:ハイパーリンクのログインが見えます。
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com