[Python.NET] How to run a command by Embedded Python?

Seungweon Park swpark71 at gmail.com
Thu Mar 28 23:22:56 CET 2013


BTW, PyObject po = PythonEngine.RunString(strCommand); returns 'null' when
running "os.getcwd()", and PythonEngine.RunSimpleString(strCommand) returns
'-1'.

Currently, I'm working on Async ways to execute a python command (some
commands take long to finish a task such as switch configuration, once
executing a command, and returns, then gets a result later).
Would you give me some suggestions how/what would be best idea for Async
wrapper using Python.RunTime?

Thanks,
Spark.

On Thu, Mar 28, 2013 at 2:35 PM, Seungweon Park <swpark71 at gmail.com> wrote:

> Hi,
>
> I wrote a code PythonWrapper and SimplePythonTest which uses PythonWrapper.
>
>
> using SimplePython;
>
> namespace SimplePythonTest
> {
>     /// <summary>
>     /// Python Wrapper Tests
>     /// </summary>
>     [TestFixture]
>     public class PythonTests
>     {
>         PythonWrapper py;
>         /// <summary>
>         /// PythonTests Constructor
>         /// </summary>
>         public PythonTests()
>         {
>             py = new PythonWrapper();
>
>             py.Init();
>
>             PyObject po;
>             po = py.LoadModule("os");
>             po = py.LoadModule("sys");
>             po = py.LoadModule("psutil");
>         }
>
>         /// <summary>
>         /// Python Simple Test
>         /// </summary>
>         [Test]
>         public void CommonPythonTests()
>         {
>             PyObject po = py.Execute("os.getcwd()");
>             Trace.WriteLine(po.Repr());
>
>             py.Close();
>         }
>     }
> }
>
>
> namespace SimplePython
> {
>     /// <summary>
>     /// Python Wrapper via XMLRPC/Python 2.7.3/.Net for Python.
>     /// </summary>
>     public class PythonWrapper
>     {
>         /// <summary>
>         /// Inter Lock
>         /// </summary>
>         private IntPtr gs;
>
>         /// <summary>
>         /// Constructor
>         /// </summary>
>         public PythonWrapper()
>         {
>         }
>
>         /// <summary>
>         /// Initialize PythonEngine
>         /// </summary>
>         public void Init()
>         {
>             PythonEngine.Initialize();
>             gs = PythonEngine.AcquireLock();
>
>         }
>
>         /// <summary>
>         /// Load Module
>         /// </summary>
>         /// <param name="strModule">Module Name</param>
>         /// <returns></returns>
>         public PyObject LoadModule(string strModule)
>         {
>             return PythonEngine.ImportModule(strModule);
>         }
>
>         /// <summary>
>         /// Execute Python Command
>         /// </summary>
>         /// <param name="strCommand">Python Command</param>
>         /// <returns></returns>
>         public PyObject Execute(string strCommand)
>         {
>             PyObject po = PythonEngine.RunString(strCommand);
>
>             return po;
>         }
>
>         public void Close()
>         {
>             PythonEngine.ReleaseLock(gs);
>             PythonEngine.Shutdown();
>         }
>     }
> }
>
> When testing (CommonPythonTests),  it initializes and loads modules, but
> PythonEngine.RunString() doesn't seem to work properly. Is any something
> wrong in my code which gets os.getcwd()? Furthermore, I can't find the
> difference between PythonEngine.RunString() and
> PythonEngine.RunSimpleString().
>
> Thank you,
> Spark.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pythondotnet/attachments/20130328/e196062b/attachment.html>


More information about the PythonDotNet mailing list