On Apr 6, 2011, at 10:40 AM, pierreth wrote: > > On 6 avr, 13:23, Jonathan Lundell <[email protected]> wrote: >> How about this, as a means of adding the app-specific modules/ to sys.path: >> in a thread-local object 'localthing', store the path to the current >> application's modules/ directory in something.modules. >> >> Subclass str thus: >> >> class LocalModules(str): >> def __str__(self): >> return str(localthing.modules) >> >> In the web2py startup logic: >> >> sys.path.append(LocalModules("modules")) # the value isn't important, though >> it could be used to generalize this construct >> >> In the web2py request logic: >> >> something.modules = <path to current application's modules directory> >> >> This could be generalized somewhat by having LocalModules get the real >> string ("modules" in this example) from super, and fetch the attribute of >> that name from localthing. > > No, this will not work. sys.path takes string.
It should also take a subclass of str. > We can had a marker > like "__modules__" in sys.path then we add a Python loader in > sys.path_hooks for the marker. The new Python loader will read the > thread local variable from web2py (could be bended pretty much > anywhere). But I think this solution would be more complex then the > previous one I just described.

