Soy realmente nuevo en programación y quería seguir el tutorial de Djangogirls, pero ahora estoy atascado. En el tutorial, estoy aquí :
Para crear una base de datos para nuestro blog, ejecutemos lo siguiente en la consola: python manage.py migrate (debemos estar en el directorio djangogirls que contiene el archivo manage.py). Si eso va bien, debería ver algo como esto: ...
No hay opción para fallar en el tutorial pero tengo un mensaje de error:
(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é estoy haciendo mal? ¿Qué tengo que hacer?
tengo python 3.7.0b1
Muchas gracias de antemano por la ayuda :)
No estás haciendo nada malo; este es un problema entre Django y Python 3.7. Django tiene una solución , pero esa solución aún no se ha convertido en una nueva versión.
Mientras tanto, puede instalar la versión estable de Python, Python 3.6.
La versión del tutorial de Django Girls en inglés acaba de cambiar a Django 2.0 , lo que debería hacerlo compatible con Python 3.7. (Django 2.0 incluye un backport de la solución mencionada en la respuesta de Ry ).
Entonces, todos los que comiencen el tutorial ahora deberían estar bien con Python 3.7.
Si ya ha comenzado el tutorial, deberá comenzar de nuevo en el capítulo de instalación de Django . Querrá hacer eso en un nuevo directorio (ya sea eliminar o cambiar el nombre de su directorio djangogirls actual o elegir un nombre diferente para el nuevo directorio) como los archivos generados por
django-admin print startproject mysite .depende de la versión de Django en uso.
Según las preguntas frecuentes de Django, Django 1.11.x no es compatible con Python 3.7.
Django 1.11.x llegó al final del soporte principal el 2 de diciembre de 2017 y solo recibe correcciones de seguridad y pérdida de datos hasta el final de su vida útil.
Como todas las respuestas anteriores ya sugieren que hay una falta de coincidencia entre la versión de Django y Python.
Al crear un entorno virtual, ejecute el siguiente comando
python3.6 -m venv myenv Utilizará Python3.6 mientras crea su entorno virtual.
Ahora puede instalar todas las dependencias en este entorno virtual.
Esta es una incompatibilidad conocida entre Django y Python 3.7. Ya se ha fusionado una solución en las ramas de Django 2.x y se ha adaptado a la rama 1.11 .
Para resolver este problema, simplemente actualice Django al menos a la versión 1.11.17 (o 2.x) o puede degradar Python a la versión 3.6.
Solo Django == 2.2 será compatible con Python 3.7, por lo que actualizar su versión de Django resolverá su problema
pip3 install django --upgradeSiga los pasos mencionados a continuación para solucionar el problema:
virtualenvsite-packagesdjangocontribadmin . Aquí es donde encontraría un archivo 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(), )Necesitas cambiar eso a lo siguiente
if params: related_url += '?' + '&'.join( related_url += '?' + '&'.join('%s=%s' % (k, v) for k, v in params.items())Guarde los cambios y ejecute la migración nuevamente.
Resolví este problema al actualizar Django a Dajngo==1.11.29 , la última versión de Dajngo 1.11. Creo que mi versión de Python era 3.8.x. Pruébelo si no planea actualizar a Django 2.x o 3.x