LoginSignup
30
38
記事投稿キャンペーン 「2024年!初アウトプットをしよう」

Python実行環境を配布して、.NETアプリから利用する。

Last updated at Posted at 2024-01-01

目標

namedivider-pythonを、Windowsで実行できるようにし、Excelアドインの関数から呼び出せるようにする。

課題

  • .NETから呼び出す方法
  • namedivider-pythonを含めたPython実行環境を、ユーザーに配布する。

.NETから呼び出す

pythonnetを利用する。

WinPythonを利用するには、次の設定をしないといけないようです。
Using Python.NET with Virtual Environments

設定例

Runtime.PythonDLL = @"HOGE\python-3.12.0.amd64\python312.dll";

var pythonPath = @"HOGE\python-3.12.0.amd64";
Environment.SetEnvironmentVariable("PATH", $@"{pythonPath};" + Environment.GetEnvironmentVariable("PATH"));
Environment.SetEnvironmentVariable("PYTHONHOME", pythonPath);
Environment.SetEnvironmentVariable("PYTHONPATH ", $@"{pythonPath}\Lib");

PythonEngine.Initialize();
using (Py.GIL())
{
}

設定は、
C# initialize fails if a class derived from IEnumerable and IEnumerator is in global namespace
を参考にしています。

名前分割

using (Py.GIL())
{
    var name = "佐藤始";
    dynamic namedivider = Py.Import("namedivider");
    dynamic basic_divider = namedivider.BasicNameDivider();
    dynamic result = basic_divider.divide_name(name);
    dynamic family = result.family;
    dynamic given = result.given;
    Console.WriteLine(family + " " + given); //佐藤 始
    Console.ReadKey();
}

Python実行環境を、ユーザーに配布

ユーザーに、Pythonをインストールしてもらい、必要なライブラリもインストールしてもらうのはハードルが高いです。
さまざまな方法を検討し、WinPythonを利用することにしました。
WinPythonは、ポータブルとして利用できるので、フォルダごとファイルを配置するだけで、Pythonを利用できます。

何をダウンロードするか?

例えば、WinPython 2023-04 of December 7th 2023なら、Winpython64-3.11.6.0dot.exeや、Winpython64-3.12.0.1dotb5.exeで良いです。

解凍後、そのフォルダを適当なところに配置します。ユーザーに配布を前提にするなら、Cドライブのすぐ下あたりに配置してアドインを開発すると良いと思えます。

ライブラリのインストール

WinPython Command Prompt.exeを実行して、pipで、必要なライブラリをインストールします。
image.png

画像の例では、最初に、pipをアップグレードしています。
次に、pip install namedivider-pythonで、namedivider-pythonをインストールしました。これに依存するライブラリも自動的にインストールされます。

配置の方針

そして、ユーザーに配布する時は、このフォルダ全体を指定したフォルダに配置するようにします。指定したフォルダに配置するのは、pythonnetから呼び出しやすくするためです。
いろいろなやり方があるはずです。

今回は、Wix4でファイルを配置する方法を、試してみました。
WinPythonを、WiX4で配置する。

30
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
38