using Python.Runtime; namespace PythonInterop { public class AIModule { public AIModule(string PythonPath = "/usr/local/lib/libpython3.11.so") { // Use the user provided python runner Runtime.PythonDLL = PythonPath; string baseDir = AppDomain.CurrentDomain.BaseDirectory; string pythonFiles = Path.Combine(baseDir, "AIPython"); // Use our local environment for the python libraries PythonEngine.PythonHome = "/usr/local"; // Include all the paths for python packages most importantly our venv PythonEngine.PythonPath = $"/usr/local/lib/python3.11:/usr/local/lib/python3.11/lib-dynload:/usr/local/lib/python3.11/site-packages:{pythonFiles}"; // Initiilize python PythonEngine.Initialize(); } // This is thread blocking, runs on the main thread, and takes multiple minutes so probabaly need to run on a background thread at some point public void PullData() { using (Py.GIL()) { dynamic datapuller = Py.Import("datapuller"); dynamic result = datapuller.pull(); } } public void TestAI() { using (Py.GIL()) { dynamic main = Py.Import("main"); dynamic result = main.main(); } } } }