Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

from django.core.management.base import NoArgsCommand, CommandError ImportError: cannot import name 'NoArgsCommand'

Tags:

python

django

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 to compressor the css and js file. and this is my setting.

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 book "Lightweight Django".

like image 801
leo Avatar asked Mar 30 '17 02:03

leo


2 Answers

According to Django documentation, the class NoArgsCommand is now deprecated and will be removed from Django 1.10. Use BaseCommand instead, which takes no arguments by default.

Here is 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):
        ...
like image 109
ian0411 Avatar answered Oct 16 '22 11:10

ian0411


Try this, its working 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.

like image 3
Umar Asghar Avatar answered Oct 16 '22 11:10

Umar Asghar