Web2Py Working Directory

stemmer
3

Vel jeg vil bruke WEb2Py fordi det er ganske fint .. Jeg trenger bare å endre arbeidsmappen til katalogen der alle mine moduler / bibliotek / apps er så jeg kan bruke dem. Jeg ønsker å være i stand til å importere ekte program når jeg bruker web2py grensesnitt / applikasjoner. Jeg må gjøre dette i stedet for å sette alle mine apps og sånt inne i Web2Py mappe ... Jeg prøver å gi mitt program en web frontend uten å sette programmet i Web2Py mappen .. Beklager hvis dette er vanskelig å forstå.

Publisert på 30/12/2009 klokken 01:01
kilden bruker
På andre språk...                            


3 svar

stemmer
0

os.chdir lar deg endre OS arbeidskatalog, men til ditt formål (slik at import av en haug med moduler og c som er begrenset til å leve i noen merkelig sted) synes det er bedre å legge de nødvendige katalogene til sys.path stedet.

Svarte 30/12/2009 kl. 01:09
kilden bruker

stemmer
5

I alle multi-threaded Python program (og ikke bare Python) bør du ikke bruke os.chdir og du bør ikke endre sys.path når du har mer enn én tråd kjører. Det er ikke trygt fordi det påvirker andre tråder. Videre bør du ikke sys.path.append () i en sløyfe fordi det kan eksplodere.

Alle web-rammeverk er multi-threaded og forespørsler blir utført i en sløyfe. Noen web-rammeverk er det ikke mulig å installere / avinstallere programmer uten å starte webserveren og derfor IF os.chdir / sys.path.append utføres bare ved oppstart så er det ikke noe problem.

I web2py ønsker vi å kunne installere / avinstallere programmer uten å starte webserveren. Vi ønsker apps for å være svært dynamisk (for eksempel definere modeller basert på informasjon med HTTP-forespørsel). Vi ønsker hver app å ha sin egen modeller mappe og vi ønsker fullstendig skille mellom programmer slik at hvis to apps trenger til forskjellige versjoner av samme modul, at de ikke kommer i konflikt med hverandre, så vi gir APIer for å gjøre det (request.folder , local_import).

Du kan fortsatt bruke den normale os.chdir og sys.path.append men du bør gjøre det utenfor tråder (og dette er ikke en web2py bestemt sak). Du kan bruke import hvor som helst som du ville gjort i andre Python program.

Jeg anbefaler sterkt å flytte denne diskusjonen til web2py postliste.

Svarte 31/12/2009 kl. 22:23
kilden bruker

stemmer
0

Jeg måtte gjøre dette svært ting. Jeg har noen moduler som jeg ønsket å bruke fra mine kontrollere. Hvis du ønsker å være i stand til å bruke koden som ligger i moduler katalogen i kontrolleren, kan du bruke:

# use this in your controller code
impname = local_import('module_in_modules', reload=True)
# reload true  will ensure that it will re load whenever
# there are changes to the module

Jay

Svarte 26/01/2010 kl. 00:40
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more