From django.core.management.base import NoArgsCommand, CommandError ImportError: Unable to import name "NoArgsCommand"

Traceback (most recent call last):
File "prototypes.py", line 39, in <module>
execute_from_command_line(sys.argv)
File "/home/leo/Desktop/learning_log/ll_env/lib/python3.5/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
utility.execute()
File "/home/leo/Desktop/learning_log/ll_env/lib/python3.5/site-packages/django/core/management/__init__.py", line 359, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/leo/Desktop/learning_log/ll_env/lib/python3.5/site-package/django/core/management/base.py", line 294, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/leo/Desktop/learning_log/ll_env/lib/python3.5/site-packages/django/core/management/base.py", line 345, in execute
output = self.handle(*args, **options)
File "/home/leo/Desktop/prototypes/sitebuilder/management/commands/build.py", line 42, in handle
call_command('compress',interactive=False,force=True)
File "/home/leo/Desktop/learning_log/ll_env/lib/python3.5/site-packages/django/core/management/__init__.py", line 113, in call_command
command = load_command_class(app_name, command_name)
File "/home/leo/Desktop/learning_log/ll_env/lib/python3.5/site-packages/django/core/management/__init__.py", line 40, in load_command_class
module = import_module('%s.management.commands.%s' % (app_name, name))
File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 665, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "/home/leo/Desktop/learning_log/ll_env/lib/python3.5/site-packages/compressor/management/commands/compress.py", line 9, in <module>
from django.core.management.base import NoArgsCommand, CommandError
ImportError: cannot import name 'NoArgsCommand'

      

When I run python3 prototypes.py build I got this problem. I just want a compressor css and js file. and this is my setup.

import os
import sys
from django.conf import settings


BASE_DIR = os.path.dirname(__file__)

settings.configure(
   DEBUG=True,
   SECRET_KEY='plasq@qb+&t-@=x56@=ss=+y-4kp*hj1wy5p!+$cinzhnd+erb',
   ROOT_URLCONF='sitebuilder.urls',
   MIDDLEWARE_CLASSES=(),
   INSTALLED_APPS=(
       'django.contrib.staticfiles',
       'sitebuilder',
       'compressor',
    ),

TEMPLATES=(
    {
        'BACKEND':'django.template.backends.django.DjangoTemplates',
        'DIRS':[],
        'APP_DIRS':True,
    },
),
STATIC_URL='/static/',
SITE_PAGES_DIRECTORY=os.path.join( BASE_DIR,'pages'),
SITE_OUTPUT_DIRECTORY=os.path.join( BASE_DIR,'_build'),

STATIC_ROOT=os.path.join( BASE_DIR,'_build','static'),
STATICFILES_FINDERS=(
                     'django.contrib.staticfiles.finders.FileSystemFinder',
                     'django.contrib.staticfiles.finders.AppDirectoriesFinder',
                     'compressor.finders.CompressorFinder',
                     )
    )
if __name__=="__main__":
     from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)

      

I followed the Easy Django book.

+3


source to share


3 answers


According to the Django doc ( https://docs.djangoproject.com/en/1.11/releases/1.8/ ) the class is NoArgsCommand

now deprecated and will be removed in Django 1.10. Use instead BaseCommand

, which takes no arguments by default.

Here's what you can do (I commented out the old way for your reference):



#from django.core.management.base import NoArgsCommand
from django.core.management.base import BaseCommand

    #class Command(NoArgsCommand):
    class Command(BaseCommand):

        #def handle_noargs(self, **options):
        def handle(self, *args, **options):
        ...

      

+4


source


Try it, it works in my case.

try:
    from django.core.management.base import NoArgsCommand as BaseCommand
except ImportError:
    from django.core.management.base import BaseCommand


class Command(BaseCommand):
    """ 
    ABC
    def
    """

      



Then write your class definition with your own implementation.

+1


source


Try this, working in my case.

pip install -U django-extensions 

      

NoArgsCommand has been deprecated. Just update the library

+1


source







All Articles