Wie ändern Sie sys.path in Google App Engine (Python)?

8

Ich habe versucht, meinem Handlerscript (main.py) die folgende Zeile hinzuzufügen, aber es scheint nicht zu funktionieren:

  

sys.path.append ('Unterverzeichnis')

subdir befindet sich im Stammverzeichnis (d. h. dasjenige, das app.yaml enthält).

Das scheint nicht zu funktionieren, denn wenn ich versuche Module zu importieren, die in subdir leben, explodiert meine App.

    
allyourcode 01.03.2010, 06:11
quelle

2 Antworten

18

1) Stellen Sie sicher, dass Sie eine leere __init__.py -Datei in subdir haben.

2) Verwenden Sie einen vollständigen Pfad; etwas wie das:

%Vor%

Bearbeiten: Bereitstellung weiterer Informationen, um in einem Kommentar gestellte Fragen zu beantworten.

Wie Nick Johnson demonstriert können Sie diese drei Codezeilen in einer Datei mit dem Namen fix_path.py platzieren. . Führen Sie dann in Ihrer main.py -Datei import fix_path vor allen anderen Importen aus. Link zu einer getesteten Anwendung, die diese Technik verwendet .

Und, ja, die Datei __init__.py ist erforderlich; in der Dokumentation :

  

Beim Importieren des Pakets Python   Durchsucht die Verzeichnisse auf   sys.path sucht nach dem Paket   Unterverzeichnis.

     

Die Dateien __init__.py werden benötigt   Machen Sie Python die Verzeichnisse als behandeln   Pakete enthalten; das ist getan zu   Verhindern Sie Verzeichnisse mit einem gemeinsamen   Name, z. B. Zeichenfolge, aus   unbeabsichtigt gültige Module verbergen   die später bei der Modulsuche auftreten   Pfad. Im einfachsten Fall    __init__.py kann nur eine leere Datei sein, aber es kann auch eine Initialisierung ausführen   Code für das Paket oder legen Sie die    __all__ Variable, später beschrieben.

    
bernie 01.03.2010, 06:48
quelle
2

Es funktionierte für mich, die neuen Verzeichnisse als erste Einträge in sys.path einzufügen.

pfad_changer.py:

%Vor%

app.py:

%Vor%     
gnrfan 06.06.2011 02:14
quelle