Web2py Arbeitsverzeichnis

stimmen
3

Nun, ich will web2py verwenden, weil es ziemlich nett .. Ich muss nur das Arbeitsverzeichnis in das Verzeichnis wechseln, wo alle meine Module / Bibliotheken / apps sind, so kann ich sie nutzen. Ich möchte in der Lage, mein wirkliches Programm zu importieren, wenn ich die web2py Schnittstelle / Anwendungen verwenden. Ich muß das tun, anstatt alle setzen meine apps und Sachen in dem web2py Ordner ... Ich versuche, meinem Programm einen Web-Frontend zu geben, ohne das Programm im web2py Ordner zu setzen .. Sorry, wenn dies ist schwer zu verstehen.

Veröffentlicht am 30/12/2009 um 04:01
quelle vom benutzer
In anderen Sprachen...                            


3 antworten

stimmen
0

os.chdir können Sie das Arbeitsverzeichnis des OS zu ändern, sondern auch für Ihre Zwecke (so dass die Einfuhr einer Reihe von Modulen und c , die gezwungen sind , in einem seltsamen Ort zu leben) es besser scheint die benötigten Verzeichnisse hinzufügen , um sys.path statt.

Beantwortet am 30/12/2009 um 04:09
quelle vom benutzer

stimmen
5

In jedem Multi-Thread-Python-Programm (und nicht nur Python) sollten Sie nicht verwenden os.chdir und Sie sollen nicht sys.path ändern, wenn Sie mehr als einen Thread laufen haben. Es ist nicht sicher, weil es andere Threads beeinflusst. Außerdem sollten Sie nicht () in einer Schleife sys.path.append, weil sie explodieren können.

Alle Webframeworks sind Multi-Threaded und Anforderungen werden in einer Schleife ausgeführt. Einig Web-Frameworks ist es nicht möglich zu installieren / un-Anwendungen installieren, ohne den Web-Server neu zu starten und damit IF os.chdir / sys.path.append nur beim Start ausgeführt wird, dann gibt es kein Problem.

In web2py wollen wir ohne Neustart des Web-Server zu installieren / deinstallieren Anwendungen in der Lage sein. Wir wollen apps sehr dynamisch sein (zB Modelle definieren, basierend auf Informationen mit der HTTP-Anforderung zur Verfügung gestellt). Wir wollen jede App, ihre eigenen Modelle Ordner haben, und wir wollen eine vollständige Trennung zwischen Anwendungen so, dass, wenn zwei Anwendungen auf verschiedenen Versionen des gleichen Moduls müssen, dass sie nicht miteinander in Konflikt geraten, so stellen wir APIs, dies zu tun (request.folder , local_import).

Sie können immer noch die normale os.chdir und sys.path.append verwenden, aber Sie sollten es Außengewinde tun (und das ist kein web2py spezifische Ausgabe). Sie können Sie importieren überall verwenden möchten, wie Sie es in einem anderen Python-Programm.

Ich empfehle, diese Diskussion auf die web2py Mailing-Liste zu bewegen.

Beantwortet am 01/01/2010 um 01:23
quelle vom benutzer

stimmen
0

Ich hatte diese sehr Sache zu tun. Ich habe einige Module, die ich von meinem Controller verwenden wollte. Wenn Sie in der Lage sein, den Code zu verwenden, die in der Steuerung in dem Modul-Verzeichnis befindet, können Sie verwenden:

# 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

Eichelhäher

Beantwortet am 26/01/2010 um 03:40
quelle vom benutzer

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