3 Stimmen

CherryPy Konfiguration tools.staticdir.Root Problem

Wie kann ich meine Stammverzeichnisse für statische Dateien relativ zu meinem Anwendungsstammordner machen (anstelle eines fest programmierten Pfads)?

In Übereinstimmung mit den CP-Anweisungen ( http://www.cherrypy.org/wiki/StaticContent ) Ich habe folgendes in meiner Konfigurationsdatei ausprobiert:

tree.cpapp = cherrypy.Application(cpapp.Root())
tools.staticdir.root = cpapp.current_dir

aber wenn ich die cherrpy.quickstart(rootclass, script_name='/', config=config_file) Ich erhalte den folgenden Fehler

builtins.ValueError: ("Konfig-Fehler in Abschnitt: 'global', Option: 'tree.cpapp', Wert: 'cherrypy.Application(cpapp.Root())'. Config-Werte müssen gültiges Python sein.", 'TypeError', ("unrepr konnte den Namen 'cpapp' nicht auflösen",))

Ich weiß, dass ich die Konfiguration innerhalb der Datei main.py vornehmen kann, kurz bevor quickstart aufgerufen wird (z. B. mit os.path.abspath(os.path.dirname( Datei ))), aber ich bevorzuge die Idee einer separaten Konfigurationsdatei, wenn möglich.

Jede Hilfe würde geschätzt werden (falls es relevant ist, ich bin mit CP 3.2 mit Python 3.1)

TIA Alan

2voto

fumanchu Punkte 14029

Wenn Sie innerhalb von Konfigurationseinträgen auf ein Modul verweisen, sucht CherryPy zuerst nach diesem Modul in sys.modules . Eine Lösung könnte also darin bestehen import cpapp kurz vor dem Aufruf von quickstart.

Aber wenn diese Suche in sys.modules fehlschlägt, versucht CherryPy, die __import__ das Modul. Da dies ebenfalls fehlschlägt, müssen Sie möglicherweise untersuchen, ob Ihr cpapp.py Modul überhaupt importierbar ist.

Siehe die lib/reprconf.py Modul für alle blutigen Details.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X