Ausführen von GAE GCS auf PyCharm unter OS X, Laufzeitfehler "Kein Modul namens cloudstorage"

8

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 Ссылка

angezeigt

Als 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:

  • Einmal ohne die Option "-t", da ich diese Option noch nie mit "pip" vor
  • benötigt habe
  • Verwenden Sie einmal die Option "-t", um das "lib" -Unterverzeichnis meines Anwendungsverzeichnisses anzugeben
  • Einmal 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;"
  • bedeuten

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.

    
Lindsay 16.10.2014, 14:14
quelle

4 Antworten

11

Wenn sich das Verzeichnis "cloudstorage" in <app>/lib/cloudstorage befindet, muss die import-Anweisung "lib" angeben:

%Vor%

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.

    
Lindsay 16.10.2014, 15:41
quelle
10

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?

    
DAVID RANDOLPH 26.02.2015 23:12
quelle
3

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

einfügen %Vor%

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%     
yeelan 07.06.2016 22:44
quelle
1

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 Ссылка

    
cyrf 05.06.2016 19:56
quelle