¿Cómo resolver SyntaxError en manage.py autogenerado?


109

Estoy siguiendo el tutorial de Django https://docs.djangoproject.com/es/1.10/intro/tutorial01/

He creado un proyecto ficticio "mysite" (el primero) y trato de probarlo sin alterarlo.

django-admin startproject mysite
cd mysite
python manage.py runserver

File "manage.py", line 14
) from exc
^
SyntaxError: invalid syntax

Recibo un SyntaxError en un archivo que fue generado por el propio sistema. Y parece que no puedo encontrar a nadie más que haya pasado por el mismo problema.

Agregaré algunos datos de mi configuración en caso de que pueda ser de utilidad

$ vpython --version
Python 2.7.12
$ pip --version
pip 9.0.1 from /home/frank/.local/lib/python2.7/site-packages (python 2.7)
$ python -m django --version
1.10.6

¿Alguien puede ayudarme?

Actualización: agregando contenido de manage.py autogenerado

cat manage.py 
#!/usr/bin/env python3
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError as exc:
        raise ImportError(
            "Couldn't import Django. Are you sure it's installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

Publique el contenido de todo el archivo (o al menos más) que tiene el error de sintaxis.
Scovetta

10
Ese archivo está diseñado para usarse con Python 3 (¡observe que es la primera línea!), Y no funcionará en 2.7.
Jasonharper

La web del tutorial dice que, cuando alguna parte del código no funcione con 2.7, agregarán las modificaciones necesarias en los comentarios. Esto no tenía modificaciones en la lista, así que asumí que funcionaría ...
Frank

Respuestas:


106

Asegúrese de con qué versión de Python conecta el django (asegúrese de activar el entorno virtual si está usando alguno).

Cuando instalas django usando solo

pip install django 

entonces tienes que correr

python manage.py startapp <yourApp name>

más si ha usado:

pip3 install django

entonces tienes que correr

python3 manage.py startapp <yourapp name>

Referir:
ingrese la descripción de la imagen aquí


11
Tuve el mismo problema python manage.py migratey lo cambió para python3 manage.py migratesolucionar el error.
landocalrissian

9
Olvidé activar mi entorno virtual.
Bobort

47

Puedes probar con python3 manage.py runserver. Esto funciona para mi.


27

debe activar su entorno virtual. En la terminal -> source env / bin / enable ahora se mostrará ----> (env) en su terminal.

ahora funcionará -> runserver.

¡No es necesario eliminar la parte exc!


13

Estaba experimentando lo mismo, pero esto se resolvió ejecutando con Python 3.6 específico como se muestra a continuación:

python3.6 manage.py runserver



9

Es mejor crear un entorno virtual y ejecutar su código Django dentro de este entorno virtual, esto ayuda a no cambiar sus entornos existentes. Estos son los pasos básicos para comenzar con el entorno virtual y Django.

  1. Cree un nuevo directorio y acceda a él.

    mkdir test , cd test

  2. Instale y cree un entorno virtual.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Activar entorno virtual: source venv/bin/activate

  4. Instale Django: pip install django

  5. Inicie un nuevo proyecto: django-admin startproject myproject

  6. cd a su proyecto y Ejecutar Proyecto:

    cd myproject , python manage.py runserver

  7. Puedes ver tu proyecto aquí: http://127.0.0.1:8000/


¡bien hecho! con este "tutorial" quedó claro cómo funciona. en django3el activatese encuentra en la .\venv\Scriptcarpeta
michael-Mammut

8

Después de probar con instrucciones precisas (usando python2 o python3 en lugar de solo "python"), he constatado que no importa lo que diga el tutorial, esto funciona SOLO con python3.


3

Para ejecutar Python versión 3, debe usar en python3lugar de python.

Entonces, el comando final será:

python3 manage.py runserver

3

La solución es sencilla. la excepción de manage.py es porque cuando ejecuta el comando con Python, Django no puede predecir la versión exacta de Python, digamos que puede tener 3.6, 3.5, 3.8 y tal vez solo una de estas versiones del módulo pip se usó para instalar Django para resolver esto o use:

./manage.py `enter code here`<command>

o usando la versión exacta de Python (xx) se encuentra:

pythonx.x manage.py <command>

de lo contrario, el uso de entornos virtuales puede ser útil porque relaciona fácilmente cualquier módulo pip django con la versión de python

  • crea env con pyenv o virtualenv
  • activar (por ejemplo, en virtualenv => virtualenv env)
  • ejecutar usando el comando python manage.py

2

Debes activar el entorno virtual donde tienes instalado django. Luego ejecute este comando: python manage.py runserver


2

Resolví la misma situación.

VERSIÓN INSTALADA

Python 3.6, django 2.1

SITUACIÓN

Instalé Node.js en Windows 10. Después de python manage.py runservercausar un error.

ERROR

File "manage.py", line 14
) from exc
^
SyntaxError: invalid syntax

RAZÓN

Mi ruta de Python cambió a python-2.7 de python-3.6. (3.6 es correcto en mi PC).

SOLUCIÓN

Corregir la ruta de Python.


2

Tuve exactamente el mismo error, pero luego descubrí que olvidé activar el entorno conda que tenía django y otros paquetes requeridos instalados.

Solución: cree una conda o un entorno virtual con django instalado y actívelo antes de usar el comando: $ python manage.py migrate


1

El django-admin tal vez sea el archivo incorrecto. Me encontré con el mismo problema que no encontré en una computadora diferente, el mismo flujo de configuración.

Después de comparar dos proyectos, encontré varias diferencias en manage.py y settings.py, luego me di cuenta de que creé el proyecto 2.0 django pero lo ejecuté con python2.

ejecutar which django-adminen iterm

/Library/Frameworks/Python.framework/Versions/3.6/bin/django-admin

Parece que tengo un django-admin en python3 y no sabía por qué, así que intenté obtener el django-amin correcto.

pip show django

entonces tengo

Name: Django
Version: 1.11a1
Summary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design.
Home-page: https://www.djangoproject.com/
Author: Django Software Foundation
Author-email: foundation@djangoproject.com
License: BSD
Location: /Library/Python/2.7/site-packages
Requires: pytz

En /Library/Python/2.7/site-packages, encontré el django-admin

/Library/Python/2.7/site-packages/django/bin/django-admin.py

Así que creé el proyecto de nuevo por

/Library/Python/2.7/site-packages/django/bin/django-admin.py startproject myproject

entonces corre

cd myproject
python manage.py runserver

tuvo éxito


1

Tenemos que crear un entorno virtual dentro del proyecto, no fuera del proyecto .. Entonces se resolverá ..


1

Parece que tienes más de una versión de Python en tu computadora. Pruebe y elimine uno y deje la única versión que utilizó para desarrollar su aplicación.

Si es necesario, puede actualizar su versión, pero asegúrese de tener solo una versión de Python en su computadora.

Espero que esto ayude.



1

Las siguientes podrían ser las posibles razones,

1. The virtual environment is not enabled
2. The virtual environment is enabled but the python version is different

Para crear un entorno virtual

$ virtualenv --python=python3 venv

Para activar el entorno virtual

$ source venv/bin/activate

1

También recibí el mismo error. ingrese la descripción de la imagen aquí

Luego volví a la carpeta donde está la carpeta del entorno y olvidé activar un entorno virtual, por lo que solo recibí este error. ingrese la descripción de la imagen aquí

Vaya a esa carpeta y active el entorno virtual.

$ source env/bin/activate


0

Lo que me pregunto es que aunque django está instalado en el contenedor, es posible que no esté en la máquina host donde está ejecutando el comando. Entonces, ¿cómo se ejecutará el comando? Entonces, dado que ninguna de las soluciones anteriores funcionó para mí.

Descubrí el contenedor en ejecución y entré en el contenedor en ejecución usando y docker exec -it <container> bash luego ejecuté el comando dentro del contenedor de la ventana acoplable. Como tenemos el contenedor volumétrico, los cambios realizados también se reflejarán localmente. Cualquier comando que se deba ejecutar se puede ejecutar dentro del contenedor en ejecución


0

Para los futuros lectores, yo también tuve el mismo problema. Resulta que instalar Python directamente desde el sitio web y tener otra versión de Anaconda causó este problema. Tuve que desinstalar Python2.7 y solo mantener anaconda como única distribución.


0

¿Has entrado en el entorno virtual de django? Ejecutar python -m venv myvenvsi aún no lo ha instalado.


0

Solo haz:

pipenv shell

luego repite:

python manage.py runserver

y no elimine from exccomo se sugirió anteriormente.

¡salud!


0

Tuve el mismo problema y pude resolverlo. Está relacionado con la versión de Django que ha instalado, algunas de ellas no son compatibles con python 2.7. Si ha instalado Django con pip, significa que está instalando la última versión de lo que probablemente no sea compatible con python 2.7. Puede obtener más información al respecto aquí . Sugeriría Python 3 o especificar la versión de Django durante la instalación (que es 1.11 para Python 2.7).


0

Resolví este problema para desinstalar la versión múltiple de Python. Consulte la documentación oficial de Django para conocer la compatibilidad con Python.

" Compatibilidad con Python

Django 2.1 es compatible con Python 3.5, 3.6 y 3.7. Django 2.0 es la última versión compatible con Python 3.4 ".

archivo manage.py

#!/usr/bin/env python
import os
import sys

if __name__ == '__main__':
   os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'work.settings')
   try:
       from django.core.management import execute_from_command_line
   except ImportError as exc:
      raise ImportError(
        "Couldn't import Django. Are you sure it's installed and "
        "available on your PYTHONPATH environment variable? Did you "
        "forget to activate a virtual environment?"
      ) from exc
    execute_from_command_line(sys.argv)

Si eliminar "from exc" de la penúltima línea de este código generará otro error debido a múltiples versiones de Python.


0

activar env con el siguiente comando

  source  pathetoYourEnv/bin/activate

luego ejecuta el comando

python manage.py runserver

0

Deberías iniciar tu entorno virtual ,

¿cómo hacerlo?

primero con el cd del terminal en el directorio que contiene manage.py

luego escribe $source <myvenv>/bin/activate reemplazar con el nombre de su entorno virtual, sin corchetes angulares.

Otro problema puede ser que su directorio raíz y venv no coincidan. La estructura debería ser algo como esto:

|-website
     ..facebook
     ..manage.py
     ..myvenv
     ..some other files

Ese es su entorno virtual y manage.py debería estar en la misma carpeta. La solución a eso es reiniciar el proyecto. Si se enfrenta a este error, aún no debe haber codificado nada, así que reinicie.


0

También resolví mi problema cuando activé mi entorno virtual usando:

source bin/activate

0

Tuve este problema (Mac) y seguí las instrucciones de la página siguiente para instalar y activar el entorno virtual

https://packaging.python.org/guides/installing-using-pip-and-virtual-environments/

$ cd [directorio-proyecto-django-nivel-superior]

$ python3 -m pip install --user virtualenv

$ python3 -m venv env

$ fuente env / bin / activar

Una vez que instalé y activé el entorno virtual lo revisé

$ cual pitón

Luego instalé django en el entorno virtual

$ pip instalar django

Y luego podría ejecutar mi aplicación

$ python3 manage.py runserver

Cuando llegué a la siguiente parte del tutorial

$ python manage.py startapp encuestas

Encontré otro error:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

quite

from exc

y luego creó el directorio de encuestas

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.