Repository navigation
Expand file tree
/
Copy pathPythonnet.cs
More file actions
30 lines (25 loc) · 1.46 KB
/
Copy pathPythonnet.cs
File metadata and controls
30 lines (25 loc) · 1.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System.IO;
using Microsoft.Extensions.Configuration;
using Python.Runtime;
namespace Matplotlib.Net;
public static class Pythonnet
{
public static IConfiguration Config { get; private set; }
public static void Init()
{
Config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
var pathToVirtualEnv = Config.GetSection("Python")["PythonHome"];
var currDir = Directory.GetCurrentDirectory();
var path = Environment.GetEnvironmentVariable("PATH").TrimEnd(';');
path = string.IsNullOrEmpty(path) ? pathToVirtualEnv : path + ";" + pathToVirtualEnv;
Environment.SetEnvironmentVariable("PATH", path, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PATH", pathToVirtualEnv, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONHOME", pathToVirtualEnv, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONPATH", $"{pathToVirtualEnv}\\Lib\\site-packages;{pathToVirtualEnv}\\Lib;{pathToVirtualEnv}\\DLLs;{currDir}", EnvironmentVariableTarget.Process);
Runtime.PythonDLL = $"{pathToVirtualEnv}/python{Config.GetSection("Python")["PythonVersion"]}.dll";
PythonEngine.PythonHome = pathToVirtualEnv;
PythonEngine.PythonPath = Environment.GetEnvironmentVariable("PYTHONPATH", EnvironmentVariableTarget.Process);
PythonEngine.Initialize();
PythonEngine.BeginAllowThreads();
}
}