SyntaxError:Generator表达式必须是parenthezised / python manage.py migrate

时间:2018-02-16 08:13:01

标签: python django syntax-error migrate

我是编程方面的新手,我想按照Djangogirls教程进行操作,但现在我已经被困了。 在本教程中,我是here

  

要为我们的博客创建数据库,让我们在控制台中运行以下命令:python manage.py migrate(我们需要在包含manage.py文件的djangogirls目录中)。如果情况顺利,你应该看到这样的事情:......

教程中没有失败选项,但我收到错误消息:

import tkinter as tk
import tkinter.ttk as ttk
from ctypes import windll

GWL_EXSTYLE=-20
WS_EX_TOOLWINDOW=0x00000080

def set_toolwindow(root):
    hwnd = windll.user32.GetParent(root.winfo_id())
    style = windll.user32.GetWindowLongPtrW(hwnd, GWL_EXSTYLE)
    style = style | WS_EX_TOOLWINDOW
    res = windll.user32.SetWindowLongPtrW(hwnd, GWL_EXSTYLE, style)
    # re-assert the new window style
    root.wm_withdraw()
    root.after(10, lambda: root.wm_deiconify())

def main():
    root = tk.Tk()
    root.wm_title("AppWindow Test")
    button = ttk.Button(root, text='Exit', command=lambda: root.destroy())
    button.place(x=10,y=10)
    #root.overrideredirect(True)
    root.after(10, lambda: set_toolwindow(root))
    root.mainloop()

if __name__ == '__main__':
    main()

我做错了什么?我该怎么办?

我有Python 3.7.0b1

非常感谢您的帮助:)

9 个答案:

答案 0 :(得分:62)

你没有做错任何事;这是Django和Python 3.7之间的问题。 Django has a fix,但该修复尚未成为新版本。

您可以同时安装稳定版本的Python,Python 3.6。

答案 1 :(得分:10)

此外,升级Django解决了我的问题

在您的终端上

$ pip install -U Django

或参见here

答案 2 :(得分:6)

这是Django和Python 3.7之间的a known incompatibility。修复程序已合并到Django 2.x branches中,并反向移植到1.11 branch

要解决此问题,只需将Django至少升级到1.11.17 (or 2.x)版,或者将Python降级到3.6版。

答案 3 :(得分:2)

Django Girls tutorial version in English具有just switched to Django 2.0,应使其与Python 3.7兼容。 (Django 2.0包含a backport中提到的修订的Ry-'s answer。)

所以现在开始本教程的每个人都应该对Python 3.7没问题。

如果您已经开始本教程,则必须在Django installation一章中重新开始。您将需要在新目录中执行此操作(删除或重命名当前的djangogirls目录,或为新目录选择其他名称)作为

生成的文件
django-admin print startproject mysite .

取决于使用的Django版本。

答案 4 :(得分:1)

Python 3.7仅支持Django == 2.2,因此升级Django版本将解决您的问题

pip3 install django --upgrade

答案 5 :(得分:0)

根据Django's FAQ,Django 1.11.x与Python 3.7不兼容。

Django 1.11.x于2017年12月2日到达end of mainstream support,并且仅收到数据丢失和安全修补程序,直到使用寿命终止。

答案 6 :(得分:0)

以上所有答案均已表明Django和Python版本之间存在不匹配的情况。
在创建虚拟环境时,请运行以下命令

git log --pretty=format:"%h %s %an %ad" --date=relative

在创建虚拟环境时,它将使用 Python3.6
现在,您可以在此虚拟环境中安装所有依赖项。

答案 7 :(得分:0)

请按照以下步骤解决此问题:

  • 移至您安装virtualenv
  • 的目录
  • 您将找到一个名为lib的目录。在该目录中,您会找到一个名为pythonx.y的目录,其中x.y是您正在使用的python版本
  • 现在,转到site-packages
  • 然后转到目录django
  • 移动到contrib目录
  • 现在,转到admin目录。在这里您可以找到python文件widgets.py
  • 在该文件中找到以下代码段
            if params:
                related_url += '?' + '&'.join(
                related_url += '?' + '&'.join('%s=%s' % (k, v) for k, v in params.items())
                    '%s=%s' % (k, v) for k, v in params.items(),
                )

您需要将其更改为以下内容

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

保存更改并再次执行迁移。

答案 8 :(得分:0)

我通过将 Django 升级到 Dajngo==1.11.29(Dajngo 1.11 的最后一个版本)解决了这个问题。我想我的 python 版本是 3.8.x。如果您不打算升级到 Django 2.x 或 3.x,请尝试一下