[IronPython] (ironclad) is it possible to get the current ScriptEngine?
dinov at microsoft.com
Thu Nov 20 08:22:35 PST 2008
It's not really possible to get back to the ScriptEngine - but you also probably don't need to. You probably want to get back to the LanguageContext(PythonContext)/ScriptDomainManager and work with those directly. ScriptEngine/ScriptRuntime are wrappers around those which expose the friendly API and provide the easy remoting features.
You can get to the LanguageContext via a CodeContext. You can get a CodeContext by just defining it as the 1st parameter on a .NET method which we'll be calling at some point.
For example our ModuleLoader class for pre-compiled code has a load_module method which receives a CodeContext. It then uses it to call back into the current PythonContext and create a new module.
From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of William Reade
Sent: Thursday, November 20, 2008 5:36 AM
To: Discussion of IronPython
Subject: [IronPython] (ironclad) is it possible to get the current ScriptEngine?
At the moment, when a user types 'import ironclad', I create a new
ScriptEngine and set that up to allow .pyd imports; I then abuse
path_hooks to use the new engine to do the imports, and copy them into
the original engine's sys.modules. Clearly, this is evil and wrong on
any number of levels, but so far it's been (just barely) good enough.
However, if I can find out which ScriptEngine is executing the code (so
I can pass that into the Python25Mapper), I can greatly simplify
ironclad.py and, hopefully, solve another user's problem (which, I
believe, is related to sys.path not being shared between the two engines
(quite rightly so, ofc ;))).
So: is there any way I can get a reference to the executing engine from
within IronPython code? It feels as if it should be possible, but
whenever I look into it I end up chasing my tail...
Users mailing list
Users at lists.ironpython.com
More information about the Users