PythonでC#(dll)を利用する方法
PythonでC#(dll)を利用する方法
私は今まで、C#での開発をする機会が多かったのですが、最近はAI関連のアプリ構築の関係でpythonを多く使用しています。
Pythonもライブラリが豊富なので、pipでインストールできるライブラリで大半のことができます。
しかし、ニッチなライブラリは自作するなどのしないといけず、「過去にC#で構築したものが使えればなぁ」と感じる場面が増えてきました。
そんな中、ふと「確かnumpyってC++で構築されたライブラリって言っていたな」と思い、もしかしたらpythonでdllを利用する方法があるのではないかと思い立ったのです。
そしたらちゃんと方法があったので、今回はこれを紹介していきたいと思います。
pythonnet
pythonからdllを呼び出すにはpythonnetというライブラリを使うことで実現できます。
※dllを呼び出すためには、そのSDKも必要になるので注意。(例:.Net6など)
導入方法と使用方法を紹介していきます。
今回は自作ライブラリであるTranscript4CSVの呼び出しを例にします。
- ライブラリの導入
- import
- dllの読み込み
- 名前空間をimport
- 各種メソッドの呼び出し
- pythonコーディング
下記コマンドを実行してライブラリをインストールします。
pip install pythonnet
下記コードを記述し、ライブラリをコード内で利用できるようにします。
from pythonnet import load load('coreclr') import clr
dllの読み込みを行います。
clr.AddReference('Transcript4CSV')
.Netの名前空間をPythonのパッケージとしてimportします。
from Transcript4CSV import TranscriptProcess
ここまでできたら、各種メソッドを呼び出します。
戻り値のあるメソッドでも普通に呼び出すことが可能で、3行目のようにpython変数に格納可能です!
transcript = TranscriptProcess("path") transcript.MakeCSVList() csv_list = transcript.GetCSVData()
dotnetのList戻り値であっても、普通にpython変数として処理が可能です。
text_array = [] for data in csv_list: text_array.append(data.split(',')[1])
このようにdotnetのライブラリであっても、Pythonから呼び出して利用が可能です!
さいごに
今回は、pythonからdotnetのライブラリを呼び出す方法を紹介しました。
正直、特殊事例な気もしますので多用することはないかもですが、同じく過去の自作ライブラリなどを利用したい場面もあると思うのでよければ参考にしてみてください。
ちなみに、今回利用した自作ライブラリを導入したwebアプリを公開しています。
vttファイルをアップロードすることで、その内容を要約するというものです。
まだβ版なので要約精度が安定しない状態ではありますが、よければ利用してみてください。
・Summarin(vtt要約)
今回はこの辺で、ではまた!
コメント
コメントを投稿