webentwicklung-frage-antwort-db.com.de

Flask - ImportError: Kein Modul mit dem Namen migrate.versioning

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

14

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).

7
BoppreH
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

22
Transformer

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
2
97amarnathk

flask/bin/pip install flask-sqlalchemy ohne zu definieren, dass die Version für mich gut funktioniert hat.

1
Sudeep Acharya

lauf :

   easy_install Flask-SQLAlchemy

installieren von Flask-SQLAlchemy

   Sudo pip install flask-migrate

flask-migrate installieren

0
li bing zhao

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 ...

0
steel00

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"

0