2014-09-03 19 views
15

Così ho iniziato a riscontrare alcuni problemi con il sud sul mio server web Django. comando di migrazione sta venendo a mancare con questa uscita ogni volta:da django.db modelli di importazione, migrazioni ImportError: impossibile importare migrazioni dei nomi

from django.db import models, migrations 

ImportError: cannot import name migrations 

(Sopra questo l'errore viene visualizzata la rotta al file che non è riuscito a eseguire la migrazione)

La mia versione Django è 1.5.1, mentre la mia versione sud è 0.8.4

La cosa che mi turba di più è che il modulo django.db.migrations non si trova da nessuna parte.

Qualche idea?

+1

Perché stai cercando di importare 'migrations' da' django.db'? Dove si trova questo codice e in che modo vengono importate le "migrazioni" nel codice? – alecxe

+1

Cosa stai cercando di ottenere? – Joren

+0

In realtà non sto cercando di importare le migrazioni da nessuna parte. Questo codice si trova sul file da migrare: è il codice dall'app rest_framework.authtoken e, come ho spiegato sopra, fa parte del messaggio di errore che sto ricevendo. – Pablo

risposta

20

Le migrazioni sono state introdotte in Django 1.7; stai usando 1.5.

Questo è un link to the docs explaining this. Se stai utilizzando una versione precedente di Django, South è l'opzione più popolare per le migrazioni dei dati.


EDIT

così il resto quadro Django causa l'errore. Dal loro documentazione:

The rest_framework.authtoken app includes both Django native migrations (for Django versions >1.7) and South migrations (for Django versions <1.7) that will create the authtoken table.

Note: From REST Framework v2.4.0 using South with Django <1.7 requires upgrading South v1.0+

Devi upgrade South oltre la vostra versione di 0.8.4 per 1.0+.

+0

Mentre ciò è vero, l'importazione delle migrazioni non dovrebbe mai essere eseguita. migrations è uno strumento da eseguire (tramite 'python manage.py makemigrations' e' python manage.py migrate). Non è un pacchetto da importare. – aliteralmind

+0

@aliteralmind Sono completamente d'accordo. Non ho sostenuto l'importazione delle migrazioni :-) Detto questo, importare 'migrations' non generava un errore in Django 1.7. – sgarza62

+1

Lo capisco. L'importazione non è stata creata da me, è inclusa nel file che sto cercando di migrare. È il codice rest_framework.authtoken. – Pablo

0

Prima di tutto, non si importa mai migrations. Non è un modulo da importare, è uno strumento di comando da eseguire.

In secondo luogo, le migrazioni sono state introdotte in Django nella versione 1.7 e si dice che si sta utilizzando 1.5 quindi non sarà possibile utilizzarlo.

Prima di Django 1.7, le persone lavoravano con il Sud perché South offre la possibilità di effettuare migrazioni nei database. Con Django 1.7 non hai più bisogno di South perché le migrazioni sono già incluse in Django. In altre parole, South è stato incluso in Django nella versione 1.7.

Date un'occhiata a questo link: https://docs.djangoproject.com/en/1.7/topics/migrations/

Spiegano che hanno incluso le migrazioni in Django.

In realtà, l'ultima versione di South è la versione 1.0 e hanno annunciato che non rilasceranno più versioni perché stanno lavorando alla versione di Django 1.7 in cui è stato incluso South. Supporteranno la versione corrente ma non aggiungeranno più funzionalità.

Date un'occhiata a questo link: http://south.readthedocs.org/en/latest/releasenotes/1.0.html

Essi spiegano che 1.0 è l'ultima major release del Sud perché stanno lavorando su Django 1,7 migrazioni.

1

Penso che l'OP non abbia importato migrazioni in uno script che stava scrivendo, uno degli script automatici creati da schemamigration potrebbe aver causato il problema.

Questo errore improvvisamente ha iniziato a comparire per me dove le migrazioni avevano funzionato prima, e ho scoperto che non aveva a che fare con le versioni di Django == 1.6.1 e Sud == 0.8.4, ma con la mia shell che si confondeva riguardo a quale virtualenv stavo usando. Avevo abbandonato un ambiente virtuale con disattivato e ne ho avviato un altro con "workon" ed eseguito una schemamigration per cambiare il nome di un campo. Quando ho eseguito ./manage migrate, ho ricevuto l'errore. Ho lasciato la shell e ho riavviato il virtual environment, e tutto andava bene.