【问题标题】:SyntaxError: Generator expression must be parenthesizedSyntaxError:生成器表达式必须用括号括起来
【发布时间】:2018-12-18 08:04:44
【问题描述】:

我刚刚安装了 django,安装后我创建了一个 django 项目并尝试通过命令运行 django 服务器:

python manage.py runserver

之后,我收到以下错误: SyntaxError: 生成器表达式必须用括号括起来

【问题讨论】:

标签: python django


【解决方案1】:

TL; DR:将 Django 升级到版本 1.11.17+ 或 2.0+


此错误is a known incompatibilityPython issue #32012 相关。基于 Django 1.11.16 及更低版本的项目在使用 Python 3.7 启动时会引发此异常。此问题的补丁 has been merged into Django 2.0 and 2.1 branches 和后来精选到 Django 1.11.17

注意:Django 1.11.17及以上版本正式支持Python 3.7,包括any 2.x branch

【讨论】:

  • 最后一部分,更新到1.11.17,运行良好。
  • 这也解决了我遇到的问题!
【解决方案2】:

生成器表达式必须带括号

> 将 Django 版本更新到 1.11.17

pip install django==1.11.17

【讨论】:

    【解决方案3】:

    有同样的问题。这就是我如何更改为 django 2.0 版并使用 python3

    • $pip3 install django==2.0
    • $python3 manage.py runserver

    【讨论】:

      【解决方案4】:
      1. 安装此版本:pip install django==1.11.17
      2. 运行 cmd。
      3. 转到您的项目文件夹。
      4. python manage.py runserver
      5. 它将为服务器提供一个 URL,然后您就可以开始了。

      【讨论】:

        【解决方案5】:

        这是由于版本不兼容,我们需要将Django版本升级到2.1。 在cmd中运行命令:pip install django==2.1。这将解决问题

        【讨论】:

          【解决方案6】:

          我刚刚遇到这样的错误。我使用的是 Django-1.11.10。我删除了它并安装了 Django 2.0

          问题解决了。

          但如果你在你的 model.py 文件中使用 ForeignKey,那肯定又是个问题。您应该将您的编码更新为旧版本的 2.0 版本。

          示例:

          django 旧版本

          user = models.ForeignKey('auth.User', related_name='posts')
          

          django 2.0

          user = models.ForeignKey('auth.User', related_name='posts', on_delete=models.CASCADE,)
          

          【讨论】:

            【解决方案7】:

            我遇到了同样的问题,我意识到这是由于我正在使用的 Django 版本的兼容性。所以我不得不像这样明确地声明 Python 版本:>python3.6 manage.py runserver

            【讨论】:

              【解决方案8】:

              只需打开文件: venv/lib/python3.7/site-packages/django/contrib/admin/widgets.py 并替换行

              related_url += '?' + '&'.join(
                  '%s=%s' % (k, v) for k, v in params.items(),)
              

              related_url += '?' + '&'.join('%s=%s' % (k, v) for k, v in params.items())
              

              【讨论】:

              • 它对我有用我将我的 django 项目升级到 1.11,我尝试进行迁移,它给出了这个错误,我尝试将代码更改为上面的代码,我尝试再次迁移并且它工作所以试试吧。
              • 这是一个非常糟糕的主意——您正在更改核心 Django 代码,现在必须保证您的 Django 的“自定义”副本安装在您的站点安装的任何位置。
              猜你喜欢
              • 2018-07-27
              • 1970-01-01
              • 1970-01-01
              • 2019-02-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-11-24
              相关资源
              最近更新 更多