2016-02-03 52 views
6

Widziałem ten post w jaki sposób uruchomić skrypt Pythona z Django: http://www.djangotutsme.com/how-to-run-python-script-from-django/
Próbowałem przykład, ale pojawia się następujący błąd podczas uruchamiania python manage.py runscript myscript . Mam zainstalowane Python 2.7, Django 1.10 i django 1.6.1.Python Atrybut błąd podczas wykonywania skryptu: Rodzaj obiektu „BaseCommand” nie ma atrybutu „option_list”

Traceback (most recent call last): 
    File "manage.py", line 10, in <module> 
    execute_from_command_line(sys.argv) 
    File "/usr/lib/python2.7/site-packages/Django-1.10.dev20151201151517-py2.7.egg/django/core/management/__init__.py", line 349, in execute_from_command_line 
    utility.execute() 
    File "/usr/lib/python2.7/site-packages/Django-1.10.dev20151201151517-py2.7.egg/django/core/management/__init__.py", line 341, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/lib/python2.7/site-packages/Django-1.10.dev20151201151517-py2.7.egg/django/core/management/__init__.py", line 193, in fetch_command 
    klass = load_command_class(app_name, subcommand) 
    File "/usr/lib/python2.7/site-packages/Django-1.10.dev20151201151517-py2.7.egg/django/core/management/__init__.py", line 40, in load_command_class 
    module = import_module('%s.management.commands.%s' % (app_name, name)) 
    File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/usr/lib/python2.7/site-packages/django_extensions-1.6.1-py2.7.egg/django_extensions/management/commands/runscript.py", line 6, in <module> 
    from django_extensions.management.email_notifications import \ 
    File "/usr/lib/python2.7/site-packages/django_extensions-1.6.1-py2.7.egg/django_extensions/management/email_notifications.py", line 10, in <module> 
    class EmailNotificationCommand(BaseCommand): 
    File "/usr/lib/python2.7/site-packages/django_extensions-1.6.1-py2.7.egg/django_extensions/management/email_notifications.py", line 49, in EmailNotificationCommand 
    **option_list = BaseCommand.option_list + (
AttributeError: type object 'BaseCommand' has no attribute 'option_list'** 

Jakieś pojęcie o problemie? Czy jest to błąd w django?

+0

Czy możesz opublikować zawartość myscript? – abidibo

Odpowiedz

9

BaseCommand.option_list jest przestarzałe w Django 1.8 i usunięte w Django 1.10. Wygląda na to, że Django-extensions has been updated, ale od tego czasu nie było nowego wydania.

Możesz spróbować zainstalować django-extensions z gałęzi master, ale lepszym pomysłem byłoby skorzystanie z najnowszej wersji Django, obecnie 1.9.2. Django 1.10 nie został jeszcze wydany i jest wciąż rozwijany.

+0

Dziękuję bardzo. To ma sens! Aby zainstalować 1.9.2, Czy muszę odinstalować 1.10 lub czy mogę po prostu usunąć folder Django-1.10.dev20151201151517-py2.7.egg /? –

+1

Jeśli zainstalowałeś Django za pomocą pip, możesz wykonać 'pip install django == 1.9.2', a ona odinstaluje starą wersję. Zwykle staram się unikać usuwania katalogów z jajami. – Alasdair

+0

Używam skryptu instalacyjnego Pythona dla archiwów, napisanego przez mojego kolegę, który działa znakomicie. Używałem go, gdy początkowo instalowałem django, django-extensions i sześć. Problem polega na tym, że używam maszyny wirtualnej, w której ustawienia środowiska proxy umożliwiają dostęp np. pypi.python.org nie działają, więc próba instalacji pip jest nieco b --- h! W każdym razie, po uruchomieniu skryptu i sprawdzeniu ścieżki do django w pythonie, wygląda na to, że wersja 1.9.2. jest rozpoznany. –