[python-win32] Global ActiveScripting object not visible

Łukasz Jakubowski lukaszj at onet.pl
Sat Apr 26 00:17:24 CEST 2014


Hello,

OK, so now the thing is clear (from DO authors):

"""
The actual problem was very simple really - inside Opus the global script  
objects were initialised in two steps:
Call the script engine's AddNamedItem method to add the object to its  
namespace
Add the object to our own internal object map

Unfortunately, Python (unlike VBScript/JScript) queries us for the object  
while it is still processing the AddNamedItem call. In effect, in Python  
the process was:

Call the script engine's AddNamedItem method to add the object to its  
namespace
<- Python calls back to us, to obtain the object's IDispatch interface
Add the object to our own internal object map

This was of course failing, because at the time Python called us to query  
for the object, we hadn't yet added it to our internal map - and so the  
call would fail.
"""

Plus a not-related problem that was discovered along the way:

"""
...Python hasn't configured the registry properly, so Opus is unable to  
map from a .py extension to the Python ActiveScript handler.
[HKEY_CLASSES_ROOT\Python.File\ScriptEngine]
@="Python"
"""

I guess there may be things to address on pywin side.

Thanks for all the help.

Regards,


> 	
> Hello,
>
> I have a problem with a file manager called Directory Opus 11. It  
> supports ActiveScripting languages, but in case of python, its global  
> objects are not visible in global namespace.
> Python packages (python-3.4.0, pywin32-218.win32-py3.4) seem to be  
> installed correctly (fe. WScript object is visible in .pys scripts), and  
> ActiveScripting engine is actually called by Directory Opus.
> Where should I start debugging? Are there some possible flags not set or  
> attributes not presented by the Directory Opus objects that could be  
> checked? Any namespaces to be searched?
>
> The exact error message is as follows:
> DOpus.OpenOutputWindow()
> ^
> Traceback (most recent call last):
>    File "<Script Block >", line 6, in <module>
>      DOpus.OpenOutputWindow()
> NameError: name 'DOpus' is not defined
>   (0x80020009)
>
> TIA & Regards,
> Łukasz


-- 
Używam klienta poczty Opera Mail: http://www.opera.com/mail/


More information about the python-win32 mailing list