I upgraded to v 2.1.1 and now see problems with module name conflicts due 
to the custom importer. Previously I used v2.0.9 without problems.

I have a custom application module named utils.py. This appears to conflict 
with the gluon.utils module. I was able to simulate using the basic web2py 
zip file and then creating a simple module 
applications/welcome/modules/utils.py. When I access the welcome default 
page, I get this error: 

Traceback (most recent call last): 
File "/root/tmp/web2py/web2py/gluon/restricted.py", line 209, 
in restricted exec ccode in environment 
File "/root/tmp/web2py/web2py/applications/welcome/models/db.py", line 42, 
in from gluon.tools import Auth, Crud, Service, PluginManager, prettydate 
File "/root/tmp/web2py/web2py/gluon/custom_import.py", line 89, 
in custom_importer return 
NATIVE_IMPORTER(name,globals,locals,fromlist,level)
File "/root/tmp/web2py/web2py/gluon/tools.py", line 30, in from utils 
import web2py_uuid 
ImportError: cannot import name web2py_uuid 

I disabled the custom importer by issuing a return immediately in 
gluon/custom_import.py def custom_import_install() and the problem goes 
away. 

I can also correct this specific issue if I change this line in 
gluon/tools.py 

-from utils import web2py_uuid 
+from gluon.utils import web2py_uuid 

This last change works, but it isn't a complete solution. For example, in 
another application I have a constants.py module. It is conflicting with a 
constants module MySQLdb makes use of. Deep in the code of MySQLdb there is 
a line:

from constants import CLIENT, FIELD_TYPE 

That import fails as it tries to find those classes in my custom module. I 
can always rename my custom module, but this becomes a cat and mouse game. 
I can't know every module name already in use. 

Any suggestions for this? It's a bit of a show stopper for me. Perhaps an 
option should be available to disable the custom importer. 

-- 



Reply via email to