[ http://issues.apache.org/jira/browse/MODPYTHON-155?page=all ]
Work on MODPYTHON-155 started by Graham Dumpleton. > req.add_handler() and inheritance of directory to be searched for module > ------------------------------------------------------------------------ > > Key: MODPYTHON-155 > URL: http://issues.apache.org/jira/browse/MODPYTHON-155 > Project: mod_python > Issue Type: Sub-task > Components: importer > Reporter: Graham Dumpleton > Assigned To: Graham Dumpleton > > The documentation for req.add_handler() says: > """Optional dir is a string containing the name of the directory to be added > to the pythonpath. If no directory is specified, then, if there is already a > handler of the same type specified, its directory is inherited, otherwise the > directory of the presently executing handler is used. I there is a PythonPath > directive in effect, then sys.path will be set exactly according to it (no > directories added, the dir argument is ignored).""" > This comment about the directory being inherited from the prior or currently > executing handler is actually bogus as the code does not do anything specific > at all to try and implement such behaviour. If it works this way at all it is > partly by luck as what will actually dictate where the module specified to > the req.add_handler() method is found is the current order of directories > specified in sys.path. Since additional directories added into sys.path by > the old importer can be performed in effectively random order, behaviour > could actually be quite random if the same module name were used in multiple > directories. > Because the new importer doesn't add directories into sys.path for > Python*Handler directives, a problem will currently arise if no directory is > supplied to req.add_handler(). Specifically, a module may not be able to be > found. This is because it can no longer fall back on to fact that with old > module importer, the directory corresponding to the Python*Handler directive > would be listed in sys.path somewhere. > Thus, the documented behaviour for req.add_handler() when the directory > hasn't been set needs to actually be implemented as described with an > appropriate directory being calculated at the time that req.add_handler() is > called with that directory being recorded as needing to be searched for the > module. In changing the code though, if old and new importers are going to be > supported during a transition phase, it must detect when the new module > importer is being used and only do this when it is, as otherwise it will > screw up how modules are found for the old importer. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira