es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python.Net – Cómo ejecutar un script de Python desde un archivo (.py)

Cómo ejecutar archivos .py y llamar a una función utilizando la biblioteca python.Net.
He intentado el siguiente código pero no se está ejecutando.

using (Py.GIL()){
  var fromFile = PythonEngine.Compile(null, @"C:\PycharmProjects\pythonenet\main.py", RunFlagType.File);
  fromFile.InvokeMethod("replace");
}

Archivo main.py:

import re
def replace():
 print(re.sub(r"\s","*","Python is a programming langauge"))

Cuando intento ejecutarlo desde una cadena, funciona.

using (Py.GIL()){
  string co = @"def someMethod():
                print('This is from static script')";
  var fromString = PythonEngine.ModuleFromString("someName", co);
  fromString.InvokeMethod("someMethod");   
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Para ejecutar archivos .py y llamar funciones utilizando la biblioteca python.NET, puedes usar el siguiente código:

    using (Py.GIL()){
      var fromFile = PythonEngine.CompileFile(@"C:\PycharmProjects\pythonenet\main.py");
      dynamic module = PythonEngine.ImportModule("main");
      module.replace();
    }
    

    En el ejemplo anterior, primero adquirimos el bloqueo global del intérprete (GIL) usando la instrucción using (Py.GIL()){...}. Luego compilamos el archivo main.py utilizando el método PythonEngine.CompileFile() y almacenamos el resultado en la variable fromFile.

    Para llamar a la función replace() en el módulo main, utilizamos el método PythonEngine.ImportModule() para importar el módulo main y almacenarlo en la variable module. Luego, podemos llamar a la función replace() utilizando la sintaxis module.replace().

    Alternativamente, si deseas ejecutar un script desde una cadena de texto, puedes utilizar el método PythonEngine.ModuleFromString() como se muestra en tu segundo ejemplo de código.

Comments are closed.