Comment résoudre SyntaxError sur manage.py généré automatiquement?

111

Je suis le tutoriel Django https://docs.djangoproject.com/es/1.10/intro/tutorial01/

J'ai créé un projet factice "mysite" (mon tout premier) et j'ai essayé de le tester sans le modifier.

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

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

J'obtiens une SyntaxError sur un fichier qui a été généré par le système lui-même. Et je semble incapable de trouver quelqu'un d'autre qui a traversé le même problème.

J'ajouterai quelques données de ma configuration au cas où cela pourrait être utile

$ 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

Quelqu'un peut-il m'aider s'il vous plaît?

Mise à jour: ajout du contenu de manage.py généré automatiquement

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)
Franc
la source
Veuillez publier le contenu de tout le fichier (ou au moins plus) qui contient l'erreur de syntaxe.
Scovetta
11
Ce fichier est destiné à être utilisé avec Python 3 (notez que c'est la première ligne!), Et ne fonctionnera pas dans 2.7.
jasonharper
Le site Web du didacticiel indique que, lorsqu'une partie du code ne fonctionnera pas avec 2.7, ils ajouteront les modifications nécessaires dans les commentaires. Cela n'avait aucune modification répertoriée, donc j'ai supposé que cela fonctionnerait ...
Frank

Réponses:

108

Assurez-vous à quelle version de python vous connectez le django (assurez-vous d'activer l' environnement virtuel si vous en utilisez).

Lorsque vous installez django en utilisant uniquement

pip install django 

alors tu dois courir

python manage.py startapp <yourApp name>

sinon si vous avez utilisé:

pip3 install django

alors tu dois courir

python3 manage.py startapp <yourapp name>

Référer:
entrez la description de l'image ici

lobsang
la source
11
J'ai eu le même problème python manage.py migrateet le modifier pour python3 manage.py migratecorriger l'erreur.
landocalrissian
9
J'ai oublié d'activer mon env virtuel.
Bobort
48

Vous pouvez essayer avec python3 manage.py runserver. Ça marche pour moi.

Fernando
la source
27

vous devez activer votre environnement virtuel. Dans le terminal -> source env / bin / activate maintenant, il y aura ----> (env) dans votre terminal affiché!

maintenant cela fonctionnera -> runserver.

Pas besoin de supprimer la partie exc!

Aditya Sinha
la source
13

Je vivais la même chose mais cela a été résolu en exécutant avec python 3.6 spécifique comme ci-dessous:

python3.6 manage.py runserver
Martin Karari
la source
12

Activez simplement votre environnement virtuel.

Esir Kings
la source
9

Il est préférable de créer un environnement virtuel et d'exécuter votre code Django dans cet environnement virtuel, cela aide à ne pas modifier vos environnements existants. Voici les étapes de base pour démarrer avec l'environnement virtuel et Django.

  1. Créez un nouveau répertoire et insérez-y un cd.

    mkdir test , cd test

  2. Installez et créez un environnement virtuel.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Activez l'environnement virtuel: source venv/bin/activate

  4. Installez Django: pip install django

  5. Démarrez un nouveau projet: django-admin startproject myproject

  6. cd à votre projet et exécutez le projet:

    cd myproject , python manage.py runserver

  7. Vous pouvez voir votre projet ici: http://127.0.0.1:8000/

Sbk3824
la source
bien joué! par ce "tutoriel", il était clair comment cela fonctionne. dans django3le activatese trouve dans le .\venv\Scriptdossier
michael-mammut le
8

Après avoir testé avec des instructions précises (en utilisant python2 ou python3 au lieu de simplement "python"), j'ai constaté que peu importe ce que dit le tutoriel, cela fonctionne UNIQUEMENT avec python3.

Franc
la source
3

Pour exécuter Python version 3, vous devez utiliser à la python3place de python.

Ainsi, la commande finale sera:

python3 manage.py runserver
Parth Patel
la source
3

La solution est simple. l'exception de manage.py est due au fait que lors de l'exécution de la commande avec python, Django est incapable de prédire la version exacte de python, disons que vous pouvez avoir 3.6, 3.5, 3.8 et peut-être qu'une seule de ces versions le module pip a été utilisé pour installer Django pour résoudre ceci soit utiliser:

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

ou en utilisant la version exacte de python (xx) signifie:

pythonx.x manage.py <command>

sinon l'utilisation d'environnements virtuels peut être utile car elle relie facilement n'importe quel module pip django à la version python

  • créer env avec pyenv ou virtualenv
  • activer (par exemple dans virtualenv => virtualenv env)
  • exécuter à l'aide de la commande python manage.py
optimus
la source
2

Vous devez activer l'environnement virtuel dans lequel vous avez installé django. Ensuite, exécutez cette commande - python manage.py runserver

Wasique Ansari
la source
2

J'ai résolu la même situation.

VERSION INSTALLÉE

python 3.6, django 2.1

SITUATION

J'ai installé Node.js dans Windows 10. Après avoir python manage.py runservercausé une erreur.

ERREUR

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

RAISON

Mon chemin python a été changé en python-2.7 à partir de python-3.6. (3.6 est correct sur mon PC.)

SOLUTION

Correction du chemin python.

Otsuki Takaya
la source
2

J'ai eu exactement la même erreur, mais j'ai découvert plus tard que j'avais oublié d'activer l'environnement conda sur lequel django et d'autres packages requis étaient installés.

Solution: créez un conda ou un environnement virtuel avec django installé et activez-le avant d'utiliser la commande: $ python manage.py migrate

Sanjay Thapa
la source
1

Le django-admin peut-être le mauvais fichier. J'ai rencontré le même problème que je n'ai pas trouvé sur un autre ordinateur le même flux de configuration.

Après avoir comparé deux projets, j'ai trouvé plusieurs différences sur manage.py et settings.py, puis j'ai réalisé que j'avais créé un projet django 2.0 mais que je l'exécutais avec python2.

courir which django-admindans iterm

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

Il semble que j'ai un django-admin en python3 dont je ne savais pas pourquoi, j'ai donc essayé d'obtenir le bon django-amin.

pip show django

alors j'ai eu

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

Dans /Library/Python/2.7/site-packages, j'ai trouvé le django-admin

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

J'ai donc recréé le projet par

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

puis courir

cd myproject
python manage.py runserver

réussi🎉

chie
la source
1

Nous devons créer un environnement virtuel à l'intérieur du projet, pas à l'extérieur du projet .. Ensuite, cela résoudra.

Shikha Mangal
la source
1

Il semble que vous ayez plus d'une version de Python sur votre ordinateur. Essayez d'en supprimer un et laissez la seule version que vous avez utilisée pour développer votre application.

Si besoin est, vous pouvez mettre à jour votre version, mais assurez-vous de n'avoir qu'une seule version de Python sur votre ordinateur.

J'espère que ça aide.

Ayodele premium
la source
1

J'ai atterri sur la même exception exacte car j'ai oublié d'activer l'environnement virtuel.

Billal Begueradj
la source
1

Les raisons suivantes pourraient être les raisons possibles,

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

Pour créer un environnement virtuel

$ virtualenv --python=python3 venv

Pour activer l'environnement virtuel

$ source venv/bin/activate
imbiber
la source
1

J'obtenais également la même erreur. entrez la description de l'image ici

Ensuite, je suis retourné dans le dossier où se trouve le dossier d'environnement et j'ai oublié d'activer un environnement virtuel, donc je n'obtenais que cette erreur. entrez la description de l'image ici

Accédez à ce dossier et activez l'environnement virtuel.

$ source env/bin/activate
Pooja Khatri
la source
1

De plus, le tutoriel recommande d'utiliser un environnement virtuel (voir la documentation Django: https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release "). Vous pouvez le faire avec pipenv --three. Once vous avez installé django avec pipenv install djangoet activé votre environnement virtuel avec pipenv shell, python fera référence à python3 lors de l'exécution python manage.py runserver.

Documentation Pipenv: https://pipenv.kennethreitz.org/

David Weisiger
la source
0

Ce que je me demande, c'est que si le django est installé dans le conteneur, il peut ne pas être dans la machine hôte sur laquelle vous exécutez la commande. Alors comment la commande s'exécutera. Donc, depuis aucune solution ci-dessus n'a fonctionné pour moi.

J'ai découvert le conteneur en cours d'exécution et suis entré dans le conteneur en cours d'exécution en utilisant, docker exec -it <container> bash puis j'ai exécuté la commande à l'intérieur du conteneur docker. Comme nous avons le conteneur volumé, les modifications apportées seront également reflétées localement. Quelle que soit la commande à exécuter, elle peut être exécutée dans le conteneur en cours d'exécution

Tara Prasad Gurung
la source
0

Pour les futurs lecteurs, j'ai moi aussi eu le même problème. Il s'avère que l'installation de Python directement à partir du site Web ainsi qu'une autre version d'Anaconda ont causé ce problème. J'ai dû désinstaller Python2.7 et ne garder anaconda que comme seule distribution.

Kshitij G
la source
0

Êtes-vous entré dans l'environnement virtuel de django? Exécutez python -m venv myvenvsi vous ne l'avez pas encore installé.

Tomilia
la source
0

Faites simplement:

pipenv shell

puis répétez:

python manage.py runserver

et ne supprimez pas from exccomme suggéré ci-dessus.

à votre santé!

Stanislau Baranouski
la source
0

J'ai eu le même problème et j'ai pu le résoudre. Il est lié à la version de Django que vous avez installée, certains d'entre eux ne sont pas pris en charge par python 2.7. Si vous avez installé Django avec pip, cela signifie que vous installez la dernière version de ce qui n'est probablement pas pris en charge dans python 2.7, vous pouvez obtenir plus d'informations à ce sujet ici . Je suggérerais de python 3 ou de spécifier la version de Django lors de l'installation (qui est 1.11 pour python 2.7).

Keivan
la source
0

J'ai résolu ce problème pour désinstaller la version multiple de Python. Consultez la documentation officielle de Django pour la compatibilité avec Python.

" Compatibilité Python

Django 2.1 prend en charge Python 3.5, 3.6 et 3.7. Django 2.0 est la dernière version à prendre en charge Python 3.4. "

fichier 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 la suppression de "from exc" de l'avant-dernière ligne de ce code générera une autre erreur en raison de plusieurs versions de Python.

Muhammad Faizan Fareed
la source
0

activer env par la commande suivante

  source  pathetoYourEnv/bin/activate

puis exécutez la commande

python manage.py runserver
Vinod Ranga
la source
0

Vous devez démarrer votre environnement virtuel ,

comment faire?

d'abord avec le terminal cd dans le répertoire contenant manage.py

puis tapez $source <myvenv>/bin/activate remplacer par le nom de votre environnement virtuel, sans crochets angulaires.

Un autre problème peut que votre répertoire racine et venv ne correspondent pas. La structure devrait être quelque chose comme ceci:

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

C'est votre environnement virtuel et manage.py doit se trouver dans le même dossier. La solution à cela est de redémarrer le projet. Si vous rencontrez cette erreur, vous ne devez encore rien coder, alors redémarrez.

rishabh jain
la source
0

J'ai également résolu mon problème lorsque j'ai activé mon environnement virtuel en utilisant:

source bin/activate
Nabila Tajrin
la source
0

J'ai eu ce problème (Mac) et j'ai suivi les instructions de la page ci-dessous pour installer et activer l'environnement virtuel

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

$ cd [répertoire-de-projet-django-supérieur]

$ python3 -m pip install --user virtualenv

$ python3 -m venv env

$ source env / bin / activate

Une fois que j'ai installé et activé l'environnement virtuel, je l'ai vérifié

$ quel python

Ensuite, j'ai installé django dans l'environnement virtuel

$ pip installer django

Et puis je pourrais exécuter mon application

$ python3 manage.py runserver

Quand je suis arrivé à la partie suivante du tutoriel

Sondages $ python manage.py startapp

J'ai rencontré une autre erreur:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

j'ai enlevé

from exc

et il a ensuite créé le répertoire des sondages

cfranklin
la source