Ich versuche, Alembic zu verwenden, der ein sqlalchemy Werkzeug in Python ist. Sie geben einen Befehl ein und es erzeugt einen Ordner "Alembic" mit Py-Dateien. Die Py-Datei innerhalb, muss mit meiner Anwendung in einem separaten Ordner namens "myapp" verlinken. Aber ich kann es nicht verbinden. Es besagt, dass es nicht existiert und der relative Import funktioniert nicht.
Ich muss also meine Konfigurationsklasse aus der Datei myapp / configs / config.py importieren.
%Vor%in env.py:
%Vor%Funktioniert nicht.
Ich habe es versucht:
%Vor%Kein Erfolg.
Beispielcode in Alembic-Dokumenten sagen Sie einfach "myapp.whatever".
Ich habe sogar "/ apps" und "/ myapp" zu PYTHON_PATH in Umgebungsvariablen hinzugefügt.
Beispielfehler:
%Vor%Sie haben zwei mögliche Lösungen für Ihr Problem:
Fügen Sie den Pfad zum apps-Katalog hinzu, indem Sie die folgenden BASH / SH-Shell-Befehle in Ihrem Terminal ausführen:
%Vor%Bitte beachten Sie, dass das Hinzufügen zur Umgebungsvariablen PATH nicht funktioniert. Um mehr über PYTHONPATH zu erfahren, wie man es verwaltet, sowie nette und freundliche Informationen über Module im Allgemeinen:
Bitte beachten Sie jedoch, dass dieser Ansatz den PYTHONPATH Ihres Systems beeinflusst. Es wird dringend empfohlen, ein virtualenv zu verwenden - nur für den Fall, dass etwas schief geht, wird es nicht alle Ihre System und andere Apps beeinflussen. Bei Verwendung von virtualenvwrapper:
%Vor%Weitere HIER .
Alternativ können Sie dasselbe tun, aber nur für eine Skriptlaufzeit, indem Sie Folgendes hinzufügen:
%Vor% zu Ihrer apps/alembic/env.py
-Datei.
Nehmen Sie schließlich in derselben Datei folgende Änderungen vor:
%Vor% Und bitte beachten Sie, dass Ihr apps/myapp
Ordner auch __init__.py
Datei (möglicherweise leer) enthalten sollte, damit Python als Modul behandelt wird, wie Demian Brecht darauf hingewiesen hat.
Ist myapp
eine in sich geschlossene Anwendung oder eine Unteranwendung wie die, die Sie mit Django finden können? Wenn es eine in sich geschlossene App ist, dann gehst du etwas falsch. Was Sie wirklich tun möchten, ist, die Abhängigkeiten zu installieren, die Ihre App hat, um auf sie zugreifen zu können, ohne relative Imports und Ähnliches verwenden zu müssen (was eine schlechte Übung ist, besonders wenn jemand außer Ihnen benutzt die App).
Was Sie wahrscheinlich tun möchten (auch wenn es in sich abgeschlossen ist):
alembic
als Abhängigkeit: pip install alembic
requirements.txt
-Datei: pip freeze > requirements.txt
Nun sollten Sie in der Lage sein, Alambic via import alembic
von überall in Ihrem Projekt zu verwenden.
Bearbeiten :
Ihre Verzeichnisstruktur ist auch ein wenig wackelig. Sie möchten alle Ihre appspezifischen Module in ein anderes myapp
-Unterverzeichnis einfügen:
Der Grund dafür ist, dass du myapp
zu deinem PYTHONPATH
hinzufügen kannst und alle Module aus deiner App über from myapp import foo
importieren kannst. So wie es steht, wenn myapp
auf Ihrem PYTHONPATH
steht, können Sie nur auf die Submodule aus der zweiten Namespace-Ebene (d. H.% Co_de%) zugreifen, was aus offensichtlichen Gründen schlecht ist.
Tags und Links python import alembic python-module