tarantino - Django comando personalizado no encontrado
django tutorial (6)
Creo que los comandos / deben estar dentro del directorio / management.
Tener problemas para conseguir que los comandos personalizados de django funcionen.
Desde la documentación de django, se han colocado.
application/
manage.py
blog/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
myapp_task.py
views.py
El contenido de myapp_task.py es
from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
def handle_noargs(self, **options):
print ''Doing task...''
# invoke the functions you need to run on your project here
print ''Done''
cuando corrió
python manage.py myapp_task
obtener error
Unknown command: ''myapp_task''
Esto se debe a que el init .pyc no se crea automáticamente en la carpeta "administración" y "comandos". Copie your_app/__init__.py
y your_app/__init__.pyc
y péguelo dentro de la carpeta de administración / y comandos /.
Hola, también tuve este problema y descubrí que estaba mezclando el identificador del argumento con el nombre del archivo
por lo que el archivo es el nombre del comando que desea, es decir, updater
. Cambié updatefiles.py a updater.py
class Command(BaseCommand):
help = ''Update Files Since /'X/' Days Ago''
def add_arguments(self, parser):
parser.add_argument(''updatefiles'', nargs=''+'', type=int)
def handle(self, *args, **options):
days_ago = int(options[''updatefiles''][0])
days_ago = (days_ago * -1) if days_ago < 0 else days_ago
self.stdout.write(''Adding files since %s days ago'' % days_ago)
add_files_function(days_ago)
entonces para ejecutar yo usaría
python manage.py updater
La estructura del directorio en su respuesta es un poco ambigua; al colocar los archivos de la siguiente manera, django debería poder encontrar su comando:
project/ # in your question this would be ''application''
manage.py
blog/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
myapp_task.py
views.py
Además, deberás habilitar tu aplicación en tu settings.py
:
INSTALLED_APPS = (
''django.contrib.auth'',
''django.contrib.admin'',
''django.contrib.contenttypes'',
''django.contrib.sessions'',
''django.contrib.sites'',
''blog'', # <= your app here ...
)
Si el proyecto está compilado por bytes, django.core.management.find_commands () solo buscará archivos .py. Si sus comandos personalizados están en archivos .pyc, necesita parchear django / core / management / commands / __ init__.py con el parche en https://code.djangoproject.com/ticket/19085
Yo tuve el mismo problema. La razón fue que la raíz del proyecto no estaba en mi $ PYTHONPATH. La solución en este caso es escribir (en una máquina Linux) algo como
PYTHONPATH=./project python manage.py myapp_task