Ich arbeite durch ein Lernprogramm für Flaschen und versuche, ein Skript auszuführen, das eine Datenbank erstellt, anstatt es über die Befehlszeile auszuführen. Es verwendet das SQLAlchemy-migrate-Paket, aber wenn ich versuche, das Skript auszuführen, gibt es einen ImportError.
Dies ist der Terminalausgang:
Sean:app seanpatterson$ python ./db_create.py
Traceback (most recent call last):
File "./db_create.py", line 2, in <module>
from migrate.versioning import api
ImportError: No module named migrate.versioning
Dies ist das Skript db_create.py:
#!flask/bin/python
from migrate.versioning import api
from config import SQLALCHEMY_DATABASE_URI
from config import SQLALCHEMY_MIGRATE_REPO
from app import db
import os.path
db.create_all()
if not os.path.exists(SQLALCHEMY_MIGRATE_REPO):
api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository')
api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO)
else:
api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, api.version(SQLALCHEMY_MIGRATE_REPO))
Dies ist die Konfigurationsdatei, auf die es verweist:
#!/usr/bin/env python
import os
basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
Diese Anwendung wird in einer virtuellen Umgebung ausgeführt. Dies ist das Modul, das sich darauf bezieht, das ich in der Umgebung installiert habe:
sqlalchemy_migrate-0.7.2-py2.7.Egg-info
Jede Hilfe geschätzt
ImportError: No module named migrate.versioning
bedeutet wahrscheinlich, dass das Modul nicht installiert ist. Stellen Sie sicher, dass es in der richtigen virtuellen Umgebung installiert wurde, dass es aktiviert ist (Sie haben das Skript activate
in dieser Umgebung ausgeführt) und die ausgewählte Python-Binärdatei diese Umgebung tatsächlich verwendet (d. H. Sie verwenden Python2 und nicht Python3).
pip install sqlalchemy==0.7.9
und
pip install sqlalchemy-migrate==0.7.2
und
optional kann diese Kolben-Whooshalchemie == 0.55a das Problem lösen
Wie von @BoppreH schon gesagt
ImportError: No module named migrate.versioning
bedeutet, dass das Modul "migrate" nicht in Ihrer virtuellen Umgebung oder Ihrem System installiert ist. Stellen Sie zunächst sicher, dass Sie die richtige Umgebung verwenden und diese mit dem Skript enable aktiviert wird.
Ich hatte das gleiche Problem und hatte die richtige Umgebung eingerichtet. Trotzdem wurde der Fehler nicht gelöst.
Was für mich funktionierte, war die Installation des sqlalchemy-migrate package von pip. Nachdem Aktivierung meiner Umgebung ausgeführt wurde, habe ich den folgenden Code ausgeführt, um sie zu installieren:
pip install sqlalchemy-migrate
flask/bin/pip install flask-sqlalchemy
ohne zu definieren, dass die Version für mich gut funktioniert hat.
lauf :
easy_install Flask-SQLAlchemy
installieren von Flask-SQLAlchemy
Sudo pip install flask-migrate
flask-migrate installieren
Ich denke, dass dieser Fehler aus verschiedenen undurchsichtigen Gründen auftauchen könnte, ich möchte gerne noch einen hinzufügen, den ich erlebt habe: Ich hatte genau den gleichen Fehler, als ich die sqlalchemy-Migration korrekt installierte, und erraten, was nicht funktioniert hat Nur weil ich named die Migrationsskriptdatei als migrate.py
hatte, entstand ein Konflikt mit dem Migrationspaket. In der Tat hat PyCharm mich mit dieser Nachricht gewarnt: "Import resolves to its containing file... This inspection detects names that should resolve but don't."
Ich umbenannt das Migrationsskript als db_migrate.py
und alles hat gut funktioniert. Ich konnte verstehen, was das Problem war, weil ich ein anderes Projekt mit einem identischen Setup hatte, aber mit migrate-sqlalchemy einwandfrei funktionierte. Der einzige Unterschied war tatsächlich der Dateiname ... Hoffen Sie, dass dies möglich wäre jemandem eines Tages helfen ...
Ich hatte das gleiche Problem - "Kein Modul mit dem Namen migrate.versioning", und alles ist viel einfacher als wir sprechen. Sie müssen die Befehle "run" File: db_create.py oder file: db_migrate ausführen. py, wenn Sie PyCharm verwenden (nicht vom Terminal aus). Und Sie werden die erwartete Ausgabe haben: "Neue Migration als D gespeichert: ... da ist mein Pfad ...\microblog\db_repositort/versions/001_migration.py Aktuelle Datenbankversion: 1"