wake-up-neo.com

SyntaxError: Generator-Ausdruck muss parenthezised/python manage.py migrate sein

Ich bin wirklich neu in der Programmierung und ich wollte dem Djangogirls-Tutorial folgen, aber jetzt bin ich festgefahren ... In dem Tutorial bin ich hier :

Um eine Datenbank für unser Blog zu erstellen, führen Sie in der Konsole Folgendes aus: python manage.py migrate (wir müssen sich im Verzeichnis djangogirls befinden, das die Datei manage.py enthält). Wenn das gut geht, sollten Sie so etwas sehen: ...

Es gibt keine Option zum Scheitern im Tutorial, aber ich habe eine Fehlermeldung:

(myvenv) C:\Users\Julcsi\djangogirls> python manage.py migrate
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "C:\Users\Julcsi\djangogirls\myvenv\lib\site-packages\Django\core\management\__init__.py", 
line 364, in execute_from_command_line
utility.execute()
File "C:\Users\Julcsi\djangogirls\myvenv\lib\site-packages\Django\core\management\__init__.py", 
line 338, in execute
Django.setup()
File "C:\Users\Julcsi\djangogirls\myvenv\lib\site-packages\Django\__init__.py", 
line 27, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Users\Julcsi\djangogirls\myvenv\lib\site-packages\Django\apps\registry.py", 
line 85, in populate
app_config = AppConfig.create(entry)
File "C:\Users\Julcsi\djangogirls\myvenv\lib\site-packages\Django\apps\config.py", 
line 94, in create
module = import_module(entry)
File "C:\Users\Julcsi\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", 
line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 723, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_remove
File "C:\Users\Julcsi\djangogirls\myvenv\lib\site-packages\Django\contrib\admin\__init__.py", 
line 4, in <module>
from Django.contrib.admin.filters import (
File "C:\Users\Julcsi\djangogirls\myvenv\lib\site-packages\Django\contrib\admin\filters.py", 
line 10, in <module>
from Django.contrib.admin.options import IncorrectLookupParameters
File "C:\Users\Julcsi\djangogirls\myvenv\lib\site-packages\Django\contrib\admin\options.py", 
line 12, in <module>
from Django.contrib.admin import helpers, widgets
File "C:\Users\Julcsi\djangogirls\myvenv\lib\site-packages\Django\contrib\admin\widgets.py", 
line 152
'%s=%s' % (k, v) for k, v in params.items(),
SyntaxError: Generator expression must be parenthesized

Was mache ich falsch? Was soll ich machen?

Ich habe Python 3.7.0b1

Vielen Dank im Voraus für die Hilfe :)

33
julo6

Sie machen nichts falsch. Dies ist ein Problem zwischen Django und Python 3.7. Django hat ein Update , aber dieses Update ist noch nicht in eine neue Version aufgenommen worden.

Sie können inzwischen die stabile Version von Python, Python 3.6, installieren.

56
Ry-

Auch das Upgrade von Django hat mein Problem gelöst

Auf Ihrem Terminal 

$ pip install -U Django

oder siehe hier

9
Chiharu Miyoshi

Nur Django == 2.2 wird unterstützt, um Python 3.7 zu aktualisieren, sodass Sie Django Version Ihr Problem lösen

pip3 install Django --upgrade
1

Die Django Girls-Tutorialversion in Englisch hat hat gerade auf Django 2.0 umgestellt , was sie kompatibel zu Python 3.7 machen soll. (Django 2.0 enthält einen Rückport der in Ry-Antwort genannten Korrektur .)

Daher sollte jeder, der das Tutorial jetzt beginnt, mit Python 3.7 in Ordnung sein.

Wenn Sie das Tutorial bereits begonnen haben, müssen Sie erneut mit dem Kapitel Django Installation beginnen. Sie möchten dies in einem neuen Verzeichnis tun (entweder löschen oder umbenennen Sie Ihr aktuelles djangogirls-Verzeichnis oder wählen Sie einen anderen Namen für das neue Verzeichnis) als die von generierten Dateien

Django-admin print startproject mysite .

hängt von der verwendeten Django-Version ab.

1
das-g

Per Djangos FAQ ist Django 1.11.x nicht mit Python 3.7 kompatibel.

Django 1.11.x erreichte am 2. Dezember 2017 Ende des Mainstream-Supports und erhält bis zu seinem Lebensende nur noch Datenverlust und Sicherheits-Fixes.

0
Tim Graham

Wie alle obigen Antworten, die darauf hindeuten, dass es eine Miss-Übereinstimmung zwischen Django und Python-Version gibt.
Führen Sie beim Erstellen einer virtuellen Umgebung den folgenden Befehl aus

python3.6 -m venv myenv

Es wird Python3.6 verwenden, während Sie Ihre virtuelle Umgebung erstellen.
Nun können Sie alle Abhängigkeiten in dieser virtuellen Umgebung installieren.

0
Akash Giri

Dies ist eine bekannte Inkompatibilität zwischen Django und Python 3.7. Ein Update wurde bereits in Django 2.x-Zweige zusammengeführt und in 1.11-Zweig zurückportiert.

Um dieses Problem zu lösen, aktualisieren Sie einfach Django auf mindestens Version 1.11.17 (oder 2.x) oder Sie können Python auf Version 3.6 herabstufen.

0
Antwane