2016-02-03 13 views
6

Ho visto questo post su come eseguire uno script python da django: http://www.djangotutsme.com/how-to-run-python-script-from-django/
ho provato l'esempio, ma il seguente errore durante l'esecuzione python manage.py runscript myscript . Ho installato Python 2.7, Django 1.10 e django extension 1.6.1.Python Attributo errore durante l'esecuzione di script: tipo di oggetto 'BaseCommand' non ha alcun attributo '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'** 

Qualche idea qual è il problema? È un bug nel django?

+0

puoi pubblicare il contenuto di myscript? – abidibo

risposta

9

BaseCommand.option_list è obsoleto in Django 1.8 e rimosso in Django 1.10. Sembra estensioni Django has been updated, ma da allora non c'è stata una nuova versione.

Si potrebbe provare a installare django-extensions dal ramo master, ma sarebbe un'idea migliore utilizzare l'ultima versione di Django, attualmente 1.9.2. Django 1.10 non è ancora stato rilasciato ed è ancora in fase di sviluppo.

+0

Grazie mille. Ciò ha senso! Per installare 1.9.2, Devo disinstallare 1.10 o posso semplicemente rimuovere la cartella Django-1.10.dev20151201151517-py2.7.egg /? –

+1

Se hai installato Django usando pip, puoi fare "pip install django == 1.9.2' e disinstallerà la vecchia versione per te. Di solito cerco di evitare di rimuovere le directory delle uova. – Alasdair

+0

Sto usando uno script di installazione python per tarball, scritto da un mio collega, che funziona brillantemente. L'ho usato quando ho installato originariamente django, django-extensions e sei. Il problema è che sto usando una macchina virtuale in cui le impostazioni dell'ambiente proxy per accedere ad es. pypi.python.org non funziona, quindi provare a installare pip è un po 'di b --- h! Ad ogni modo, dopo aver eseguito lo script e verificato il percorso di django in python, sembra che la versione 1.9.2. è riconosciuto. –