Rachel Willmer wrote at 2004-1-30 15:54 +0000:
OK, so I'm now convinced that the way forward is to use a Product wrapper around the python module. (Thanks to Dieter, Sean, Andrew and Paul for responding...)
But, I'm still struggling with getting it to work :-(
Using the lib/python/PythonScripts/README as a reference:
a) I create a directory lib/python/GlobalModules
b) I create __init__.py which looks like this...
from Products.PythonScripts.Utility import allow_module allow_module('base64')
c) I restart the Zope server in development mode, and configure the GlobalModules product to auto-refresh.
What is the "GlobalModules" product? Products usually do not live in "lib/python" but in a "Products" folder. Only products can be refreshed.
d) I then create a Python Script file which looks like this:
from Products.GlobalModules import base64 def testing() : print base64.encodestring("hello") return printed
e) I call the script and get
Error Type: NameError Error Value: global name 'base64' is not defined
Your code above cannot produce this error... Whenever you see such an error, you must look at the traceback (via the "error_log" object in your Zope "Root Folder"). It tells you precisely where the error was raised. In your case, it will show you that this is not in the code you have shown above (or you did not show us all the relevant code -- e.g. a call for "testing"). -- Dieter