【问题标题】:Python Attribute Error when running script: type object 'BaseCommand' has no attribute 'option_list'运行脚本时出现 Python 属性错误:类型对象“BaseCommand”没有属性“option_list”
【发布时间】:2016-05-12 21:23:06
【问题描述】:

我看到这篇关于如何从 django 运行 python 脚本的帖子:http://www.djangotutsme.com/how-to-run-python-script-from-django/
我尝试了该示例,但在运行python manage.py runscript myscript 时出现以下错误。 我安装了 Python 2.7、Django 1.10 和 django 扩展 1.6.1。

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'**

知道问题是什么吗?这是 django 中的错误吗?

【问题讨论】:

  • 可以发一下myscript的内容吗?

标签: python django attributeerror


【解决方案1】:

BaseCommand.option_list 在 Django 1.8 中已弃用,并在 Django 1.10 中删除。它看起来像 Django-extensions has been updated,但从那时起就没有新版本了。

您可以尝试从 master 分支安装 django-extensions,但最好使用 Django 的最新版本,目前是 1.9.2。 Django 1.10 尚未发布,仍在开发中。

【讨论】:

  • 非常感谢。这就说得通了!要安装 1.9.2,我需要卸载 1.10 还是只删除 Django-1.10.dev20151201151517-py2.7.egg/ 文件夹?
  • 如果您使用 pip 安装了 Django,您可以使用pip install django==1.9.2,它会为您卸载旧版本。我通常会尽量避免删除 egg 目录。
  • 我正在使用我的一位同事编写的用于 tarball 的 python 安装脚本,效果非常好。当初安装django、django-extensions等六的时候就用过。问题是我正在使用代理环境设置访问的虚拟机,例如pypi.python.org 不起作用,所以尝试安装 pip 有点麻烦!无论如何,在运行脚本并检查python中django的路径之后,似乎是1.9.2版本。被识别。
  • >>> import django >>> django
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-23
  • 2021-12-01
  • 2014-05-14
  • 1970-01-01
  • 2018-12-07
  • 2017-11-12
  • 2014-07-08
相关资源
最近更新 更多