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

Reply via email to