Meine Verzeichnisstruktur in App Engine ist wie folgt:
%Vor% Markdown wird in main.py
von from lib.markdown import markdown
importiert. An diesem Punkt beginnt der Dev-Server, mir die folgende Stack-Trace zu geben. Ich frage mich, was hier schief läuft!? Ich habe eine init .py in lib.
Update1
Ich glaube, dass diese Frage ein Betrogen von Import ist Python-Modul mit PyImport_ImportModuleEx für ein gedit-Plugin
Die Antwort:
Wenn Sie Markdown verwenden wollen, ohne es zu modifizieren, müssen Sie es an einer Stelle ablegen, wo die Python-Bibliothek es erwartet, etwa in Site-Paketen /. Andernfalls müssen Sie es ändern, um relative Importe anstelle von absoluten Importen zu verwenden.
Update 2 Ich habe dieses Problem gelöst, indem ich mein sys.path in der App Engine geändert habe:
sys.path.append (os.path.join (os.path.dirname ( file ), 'lib'))
Danke an Murat für Hilfe,
Ich glaube, diese Frage ist eine Täuschung des Import-Python-Moduls mit PyImport_ImportModuleEx für ein gedit-Plugin
Die Antwort:
Wenn Sie Markdown verwenden möchten, ohne es zu modifizieren, müssen Sie es an eine Stelle setzen, wo die Python-Bibliothek es erwartet, z. B. in Site-Paketen /. Andernfalls müssen Sie es ändern, um relative Importe anstelle von absoluten Importen zu verwenden.
Update 2 Ich habe dieses Problem gelöst, indem ich mein sys.path in der App-Engine geändert habe:
sys.path.append (os.path.join (os.path.dirname (Datei), 'lib'))
Danke an Murat für Hilfe,
Die Datei muss __init__.py
heißen, damit sie funktioniert.
Das lib-Verzeichnis zum Pythonpfad hinzufügen funktioniert auch.
Wenn Sie Markdown verwenden wollen, ohne es zu modifizieren, müssen Sie es an einer Stelle ablegen, wo die Python-Bibliothek es erwartet, etwa in site-packages /
Das ist falsch, die App-Engine hat einen eigenen Importmechanismus und nur Pakete, die explizit in der weißen Liste aufgeführt sind, dürfen über diese Methode importiert werden.
Was du willst, ist, dass lib in deinem PYTHONPATH ist, den Pfaden, in denen Python Sachen sieht, die du importieren willst. Wie Sie herausgefunden haben, besteht eine Möglichkeit darin, lib zu sys.path hinzuzufügen.
Das Erstellen einer init .py-Datei ist nicht das, was Sie wollen, denn das macht lib zu einem Paket, das Markdown enthält. An diesem Punkt sollten Sie in der Lage sein,
zu tun %Vor%obwohl das nicht der empfohlene Weg ist, dies zu tun.
Tags und Links google-app-engine