python django migration pip django-south

python - Sur: Comando desconocido ''migrar''



django migration (6)

La importación exitosa del paquete no es suficiente para los comandos de administración de Django. Python puede importar un paquete fácilmente desde un huevo comprimido, pero Django necesita un archivo normal sin comprimir.

Consejos que simplifican su problema inicialmente:

  1. Los comandos de gestión deben existir como archivos en una path..to..south/management/commands directorio normal ... a ... path..to..south/management/commands (no comprimidos).
  2. Trate de encontrar y eliminar las instalaciones antiguas del sur manualmente. Un problema frecuente era que una versión de algún paquete había sido instalada por easy_install (zip) o manualmente por "python setup.py install", pero pip no la desinstaló y no la instaló por segunda vez.
  3. Use solo directorios absolutos en la ruta de Python. No cambie la ruta de Python entre el instalador y la ejecución de Django en el entorno o mediante la administración personalizada o settings.py si es posible. Algunos manage.py o settings.py usan una ruta de acceso de Python diferente a la utilizada por los integradores de paquetes, por ejemplo, agregó "." o ".." antes de otros directorios. No deberías tener otro directorio south en . o .. en tu proyecto.

El consejo 1 es un requisito absoluto de Django. Los otros dos son respetuosos incluso si uso varias versiones de alguna manera para probar mis aplicaciones con múltiples versiones de Python, Django, etc.

Ejemplo de investigación del requisito principal:

$ python manage.py shell >>> import os >>> import south.management.commands.migrate >>> assert os.path.isfile(south.management.commands.migrate.__file__)

Me estoy poniendo un despiadado

$ python manage.py migrate Unknown command: ''migrate'' Type ''manage.py help'' for usage.

Saqué el código de github en una computadora nueva. Este código está probado y funciona en otras computadoras. ¡Todo el código funciona bien, excepto por el hecho de que no puedo ejecutar migraciones!

Instalé mi entorno virtual y ejecuté pip install -r requirements.txt . Instala todo, incluido el sur. Puedo verificar ejecutando

$ python manage.py shell >>> import south >>> south.__version__ ''0.7.3''

Sin embargo, cuando ejecuto la manage.py help , los comandos schemamigration y schemamigration no aparecen en la lista.

Comprobé dos veces que mi archivo settings.py tiene ''south'' en la lista de INSTALLED_APPS (no cambié este archivo después de tirar).

Intenté pip uninstall south y luego ejecutar pip install -r requirements.txt nuevamente, pero sigo teniendo el mismo error.

Realmente agradecería cualquier ayuda!


Tengo el mismo error, pero por una razón diferente. Yo si:

$ python manage.py migrate my_app --settings=settings_dev.py

Pero con el parámetro de configuración, debe pasar el nombre del módulo, no el nombre del archivo . Entonces debería haber sido

$ python manage.py migrate my_app --settings=settings_dev

Se obtiene un mensaje de error decente cuando se ejecuta el comando de validación de esa manera, pero cuando se ejecuta un comando sur, se dice que el comando es desconocido: /


En mi caso. sur ya estaba instalado, pero más tarde los requisitos fueron la causa de otras bibliotecas:

pip install -r requirements.txt

No sé por qué manage.py no se quejó de ellos.



Tuve esto, pero resultó ser un error en mi settings.py que apareció cuando probé runserver . Se corrigió el error y el comando regresó. Básicamente, ninguno de los comandos de gestión para ninguna de las aplicaciones estaba allí, por lo que mi INSTALLED_APPS debe haber sido sobrescrito o nunca escrito en primer lugar. En mi caso, la importación del archivo de configuración estaba fallando silenciosamente.


Esto se debe en gran parte al seguir el tutorial 1.7 (versión DEV) cuando todos tenemos la última versión estable (1.6) instalada por pip.

Siga el tutorial de 1.6 o siga las instrucciones para instalar 1.7 dev versión de Django.