web-dev-qa-db-fra.com

SyntaxError: l'expression du générateur doit être parenthezised/python manage.py migrate

Je suis vraiment nouveau dans la programmation et je voulais suivre le tutoriel Djangogirls, mais je suis coincé maintenant . Dans le tutoriel, je suis ici :

Pour créer une base de données pour notre blog, exécutons ce qui suit dans la console: python manage.py migrate (nous devons être dans le répertoire djangogirls qui contient le fichier manage.py). Si cela se passe bien, vous devriez voir quelque chose comme ceci: ...

Il n'y a pas d'option d'échec dans le tutoriel mais j'ai un message d'erreur:

(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

Qu'est-ce que je fais mal? Que devrais-je faire?

J'ai Python 3.7.0b1

Merci beaucoup d'avance pour l'aide :)

33
julo6

Vous ne faites rien de mal; c'est un problème entre Django et Python 3.7. Django a un correctif , mais ce correctif n’a pas encore été intégré à une nouvelle version.

Vous pouvez installer la version stable de Python, Python 3.6, entre-temps.

56
Ry-

En outre, la mise à niveau de Django a résolu mon problème

Sur votre terminal, 

$ pip install -U Django

ou voir ici

9
Chiharu Miyoshi

La version du didacticiel Django Girls en anglais a vient de passer à Django 2.0 , ce qui devrait le rendre compatible avec Python 3.7. (Django 2.0 inclut un backport du correctif mentionné dans la réponse de Ry- .)

Donc, tout le monde qui commence le tutoriel devrait pouvoir utiliser Python 3.7.

Si vous avez déjà commencé le didacticiel, vous devrez le relancer depuis le chapitre Django installation . Vous voudrez le faire dans un nouveau répertoire (supprimez ou renommez votre répertoire actuel djangogirls ou choisissez un nom différent pour le nouveau répertoire) en tant que fichiers générés par

Django-admin print startproject mysite .

dépend de la version de Django utilisée.

1
das-g

D'après Django FAQ , Django 1.11.x n'est pas compatible avec Python 3.7.

Django 1.11.x a atteint la fin du support principal le 2 décembre 2017 et il ne reçoit que les correctifs de perte de données et de sécurité jusqu'à sa fin de vie.

0
Tim Graham

Comme toutes les réponses ci-dessus suggèrent déjà qu'il existe une correspondance manquée entre les versions de Django et de Python .
Lors de la création d’un environnement virtuel, veuillez exécuter la commande suivante.

python3.6 -m venv myenv

Il utilisera Python3.6 lors de la création de votre environnement virtuel.
Vous pouvez maintenant installer toutes les dépendances dans cet environnement virtuel.

0
Akash Giri

Ceci est une incompatibilité connue entre Django et Python 3.7. Un correctif a déjà été fusionné dans Django 2.x branch et rétroporté dans 1.11 branch .

Pour résoudre ce problème, mettez simplement à jour Django avec au moins la version 1.11.17 (ou 2.x) ou vous pouvez rétrograder Python vers la version 3.6.

0
Antwane