I copied Wenguang Yang (@yagweb), who developed PyScope. Steve, did you look at the unit tests for PyScope?
Thanks, Denis On Mon, Sep 24, 2018 at 8:28 AM Luke, Steve <steve.l...@moldev.com> wrote: > I am new to Python.Net and trying to convert an application that used > IronPython to embed a Python environment into a .Net application and allow > the user to run Python scripts inside our application. The part that > embeds the Python environment is VB.Net (but could be C# if that would be > better). > > > I am running into problems setting variables in the scope such that they > can be used in the Python scripts we call. I keep getting an error: > NameError: global name 'Bridge' is not defined. > > > This is the VB code I am trying to use: > > PythonEngine.Initialize() > > Using (Py.GIL()) > Dim moduleName As String = "PrintToBridge" > Dim pythonCommandLine As String = "Not used yet" > > Dim scope As PyScope = Py.CreateScope() > Try > scope.Set("Bridge", bridge) > scope.Set("SetupParams", cmdLine) > > Dim script As Object = scope.Import(moduleName) > bridge.mm.PrintMsg("Scope has Bridge:" + > Str(scope.Contains("Bridge"))) > script.Startup(pythonCommandLine) > Finally > scope.Dispose() > End Try > End Using > > The Python script: > > def Startup(param): > Bridge.mm.PrintMsg('Startup called') > > def Docommand(param): > Bridge.mm.PrintMsg('docommand called') > > def Shutdown(): > Bridge.mm.PrintMsg('Shutdown called') > > > How can I set a variable such that it would be recognized by the called > Python script? Importing the script works, I can force python-y things to > happen. And the check to see if the object I want is in scope returns > true. But it still isn't available in Python. > > > I have tried scope.Eval(moduleName + ".Startup('" + pythonCommandLine + > "')") and Exec() with locals: > > Dim locals As PyDict = New PyDict() > locals.SetItem("Bridge".ToPython(), bridge.ToPython()) > scope.Exec(moduleName + ".Startup('" + pythonCommandLine + > "')", locals) > > All with the same effect. Any ideas on how to get set variables so > scripts can gain access to them? > > > Thanks, > > Steve > > > Please be advised that this email may contain confidential information. If > you are not the intended recipient, please notify us by email by replying > to the sender and delete this message. The sender disclaims that the > content of this email constitutes an offer to enter into, or the acceptance > of, any agreement; provided that the foregoing does not invalidate the > binding effect of any digital or other electronic reproduction of a manual > signature that is included in any attachment. > _________________________________________________ > Python.NET mailing list - PythonDotNet@python.org > https://mail.python.org/mailman/listinfo/pythondotnet >
_________________________________________________ Python.NET mailing list - PythonDotNet@python.org https://mail.python.org/mailman/listinfo/pythondotnet