You can do it in routes.py import sys sys.path.append(...)
that file is executed only once. On Dec 2, 5:47 am, Alan Etkin <[email protected]> wrote: > Suppose now that i dont feel like changing the web2py.py script > because it is something like a framework's specific file. Then i think > it would be nice to be able to specify extra system routes to add to > the path on web service initialization, in an app specific way. > > How about an extrapaths file stored somewhere inside the application > folder? > > On Dec 2, 8:41 am, Alan Etkin <[email protected]> wrote: > > > > > > > > > What do you know... i found this in Stackoverflow, wich covers my > > question: > > > " ... In any multi-threaded Python program (and not only Python) you > > should not use os.chdir and you should not change sys.path when you > > have more than one thread running. It is not safe because it affects > > other threads. Moreover you should not sys.path.append() in a loop > > because it may explode. > > > All web frameworks are multi-threaded and requests are executed in a > > loop. Some web frameworks do not allow you to install/un-install > > applications without restarting the web server and therefore IF > > os.chdir/sys.path.append are only executed at startup then there is no > > problem. > > > In web2py we want to be able to install/uninstall applications without > > restarting the web server. We want apps to be very dynamical (for > > example define models based on information provided with the http > > request). We want each app to have its own models folder and we want > > complete separation between apps so that if two apps need to different > > versions of the same module, they do not conflict with each other, so > > we provide APIs to do so (request.folder, local_import). > > > You can still use the normal os.chdir and sys.path.append but you > > should do it outside threads (and this is not a web2py specific > > issue). You can use import anywhere you like as you would in any other > > Python program. > > > I strongly suggest moving this discussion to the web2py mailing > > list. ..." > > > On Dec 2, 8:30 am, Alan Etkin <[email protected]> wrote: > > > > The symbolic link approach seems to me to be more interesting than > > > modifying web2py.py, but i do not see why the sys.path.append thing at > > > application code is not recomended. I'll have to search on that topic. > > > > Thanks again for the support > > > > On Dec 2, 2:04 am, Massimo Di Pierro <[email protected]> > > > wrote: > > > > > you can create symbolic link to the web2py/site-packages folder or you > > > > can add a sys.path.append to web2py.py > > > > > On Dec 1, 9:14 pm, Alan Etkin <[email protected]> wrote: > > > > > > The required modules are stored outside the web2py folder because they > > > > > are shared by a non web2py app. So i cannot import them with that > > > > > method. I know i could just copy them into the app's modules folder > > > > > and that would be it, But i do not want to duplicate files. > > > > > > On Dec 1, 11:19 am, Anthony <[email protected]> wrote: > > > > > > > On Thursday, December 1, 2011 8:58:03 AM UTC-5, Alan Etkin wrote: > > > > > > > > >Instead making local_import("model") for a model stored at > > > > > > > >myweb2pyapp/ > > > > > > > >models/model.py, i need to make the same statement for a model > > > > > > > >stored > > > > > > > >at ~/another/path/module.py > > > > > > > > I meant import modules, sorry for the mistake. > > > > > > > > So to import a module from another path i could do: > > > > > > > > from gluon.custom_import import track_changes > > > > > > > track_changes(True) > > > > > > > sys.path.append("another/path") > > > > > > > I don't think manipulating sys.path from your app code is > > > > > > recommended. Is > > > > > > the module in the modules folder of another app? If so, just do: > > > > > > > from applications.appname.modules import mymodule > > > > > > > Anthony

