mcneel / rhinocommon

RhinoCommon is the .NET SDK for Rhino5 / Grasshopper
http://wiki.mcneel.com/developer/rhinocommon
244 stars 93 forks source link

Turn on "Frames" option for IronPython scripts #148

Open bengolder opened 11 years ago

bengolder commented 11 years ago

cross posted here.

Using GhPython, I recently tried to import a python package that I've used before, networkx, and I get this error:

Runtime error (MissingMemberException): 'module' object has no attribute '_getframe'

A little bit of searching leads me to this example showing that the ability of a script to access its "frame" can be switched on or off by properties that are passed to the IronPython Engine upon instantiation:

var options = new Dictionary<string, object>(); 
options["Frames"] = true; 
options["FullFrames"] = true; 
ScriptEngine engine = Python.CreateEngine(options);

This seems like a harmless and helpful change to the RhinoPython implementation, which would allow a greater use of third-party python packages. Is there any possibility of changing the current implementation?

bengolder commented 11 years ago

I've used networkx with RhinoPython before, so this was not previously a problem.

I tested with multiple previous versions of networkx. All give the same error. Therefore this _getframe error seems to be caused by a change in the Rhino IronPython implementation.

sbaer commented 11 years ago

This actually slows down script execution and I need to figure out a good way to allow this option in the rare cases that ghPython scripts would need them.

There is an option in the python script editor "EditPythonScript" options dialog that allows for turning frames on. This should globally affect the entire python system in Rhino and will probably turn frames of for ghPython scripts. Not very obvious, but the option is there.