Ich versuche, die Google Cloud Storage-Funktionalität zu einer Python GAE-App hinzuzufügen, die bereits über signifikante Funktionen verfügt. Ich arbeite vollständig in PyCharm auf meinem Entwicklungscomputer, einem Mac mit OS X 10.9.5.
Ich habe ein neues Python-Modul erstellt, das diese Anweisung enthält:
%Vor%wie im Beispielcode unter Ссылка
angezeigtAls ich diese Zeile zum ersten Mal hinzufügte, sagte PyCharm im Editor "Kein Modul namens cloudstorage".
Ich habe dann sowohl die Anweisungen "pip" als auch "svn" in Ссылка ausgeführt um die GCS Client Library herunterzuladen.
Beim Versuch, diesen Anweisungen zu folgen, unter Berücksichtigung meiner früheren Erfahrungen mit dieser Programmierumgebung, habe ich tatsächlich dreimal versucht, "pip" zu verwenden:
pip install GoogleAppEngineCloudStorageClient -t /Applications/GoogleAppEngineLauncher.app//Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/lib
, da ich nicht sicher war, was die Anweisungen mit "& lt; ihr_anwendungsverzeichnis / lib & gt;" Wie gesagt, habe ich auch den Befehl "svn" ausgeführt. Dann, wie in erwähnt, installieren Sie den Python Google Cloud Storage Client Ubuntu 14.04 , ich habe "cd gcs-client / src" und "sudo python setup.py install" ausgeführt. Ich habe diese Befehle in meinem Benutzerstammverzeichnis ausgeführt.
Nach jeder dieser erfolgreichen, aber unterschiedlichen Installationen der GCS Client Library habe ich das PyCharm Editor-Fenster für mein Modul angeschaut und es hatte immer den gleichen Fehler "Kein Modul namens cloudstorage". Aber als Experiment würde ich auch versuchen, PyCharm neu zu starten, und versuche auch, meine App zu starten.
Irgendwann hat das Editor-Fenster den Fehler nicht mehr angezeigt. Es war nicht direkt nach einem dieser Schritte oben, aber nachdem ich weggegangen bin, um verschiedene Webseiten zu lesen und dann zurück zu kommen, um den Fehler erneut zu betrachten. Ich weiß nicht, welche der Installationen die Fehlermeldung im PyCharm-Editor beseitigte.
Immer wenn ich versuche, die App auszuführen (wieder in PyCharm), bekomme ich immer den Laufzeitfehler "ImportError: Kein Modul mit dem Namen cloudstorage" auf derselben Importanweisung.
Die Seite Run / Debug Configuration für diese App hat sowohl "Add content roots zu PYTHONPATH" als auch "Source roots zu PYTHONPATH hinzufügen" aktiviert.
Natürlich ist die Haupthilfe, die ich möchte, wie man über den Laufzeitfehler "Kein Modul namens cloudstorage" kommt, obwohl die Import-Anweisung keinen Fehler mehr zeigt.
Ich denke, ich habe auch drei unechte Versionen der GCS Client Library. Mir geht es viel mehr darum, hinter "Modul nicht gefunden" zu kommen, da es ein Show-Stopper ist, aber wenn Sie eine Idee haben, wie ich die falschen Versionen löschen kann, damit sie nicht nur herumliegen, wäre ich am meisten dankbar für diese Hilfe auch.
Wenn sich das Verzeichnis "cloudstorage" in <app>/lib/cloudstorage
befindet, muss die import-Anweisung "lib" angeben:
In meinem Fall ist es:
%Vor% Übrigens scheint das <app>/lib/GoogleAppEngineCloudStorageClient-1.9.5.0-py2.7.egg-info
-Verzeichnis nicht benötigt zu werden und kann gelöscht werden.
Eigentlich musst du auch
Berühren Sie
__init__.py
im Verzeichnis lib. Dadurch wird das Cloudspeichermodul für den Befehl "lib.cloudstorage importieren" sichtbar.
Lieber Google: Die Distributionen sollten diese Datei enthalten (oder die Prozedur sollte dafür verantwortlich sein), und das Demoskript sollte geändert werden, um die erwartete Verwendung widerzuspiegeln. Aber noch wichtiger, warum verteilst / PROLIFIERIERst du den Bibliothekscode so? !!! Warum wird dies nicht über gcloud verteilt? Wie werde ich jemals einen Patch für diese Bibliothek abholen?
Die Lösung der akzeptierten Antwort
%Vor% kann das Problem definitiv lösen. Aber ich mag es nicht, vor jedem einzelnen Modul lib
hinzuzufügen und zufällig zu sehen, wie Google Bibliotheken von Drittanbietern wie diese vorschlägt.
appengine startet automatisch eine Datei namens appengine_config.py
. So können Sie eine solche Datei erstellen und
in dieser Datei. Dies wird Ihnen helfen, adenengine zu sagen, dass es Abhängigkeiten in diesem Ordner finden soll, so dass Sie einfach
schreiben können %Vor%Ich löse das fehlende Modulproblem, indem ich meiner Hauptanwendungsdatei (main.py) folgendes hinzufüge:
%Vor% Ich denke, das ist die Art und Weise, wie Guido gemeint ist. Jetzt sagt mein Code einfach import cloudstorage as gcs
. Keine der lib.cloudstorage
oder lib/__init__.py
business.
Von Ссылка
Tags und Links google-app-engine google-cloud-storage pycharm