Wie löse ich SyntaxError auf autogenerated manage.py?


109

Ich folge dem Django-Tutorial https://docs.djangoproject.com/es/1.10/intro/tutorial01/

Ich habe ein "mysite" -Dummy-Projekt erstellt (mein erstes) und versuche, es zu testen, ohne es zu ändern.

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

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

Ich erhalte einen SyntaxError für eine Datei, die vom System selbst generiert wurde. Und ich scheine nicht in der Lage zu sein, jemanden zu finden, der das gleiche Problem durchgemacht hat.

Ich werde einige Daten meines Setups hinzufügen, falls es von Nutzen sein könnte

$ 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

Kann mir bitte jemand helfen?

Update: Hinzufügen von Inhalten von autogenerated manage.py

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)

Bitte posten Sie den Inhalt der gesamten Datei (oder zumindest mehr davon), die den Syntaxfehler aufweist.
Scovetta

10
Diese Datei ist für die Verwendung mit Python 3 vorgesehen (beachten Sie, dass es sich um die erste Zeile handelt!) Und funktioniert in 2.7 nicht.
Jasonharper

Im Tutorial-Web heißt es, dass, wenn ein Teil des Codes mit 2.7 nicht funktioniert, die in Kommentaren erforderlichen Änderungen hinzugefügt werden. Dies hatte keine Änderungen aufgelistet, also nahm ich an, dass es funktionieren würde ...
Frank

Antworten:


106

Stellen Sie sicher, mit welcher Python-Version Sie den Django verbinden (Aktivieren Sie die virtuelle Umgebung, wenn Sie eine verwenden).

Wenn Sie Django mit nur installieren

pip install django 

dann musst du rennen

python manage.py startapp <yourApp name>

sonst wenn du benutzt hast:

pip3 install django

dann musst du rennen

python3 manage.py startapp <yourapp name>

Verweisen:
Geben Sie hier die Bildbeschreibung ein


11
Hatte das gleiche Problem mit python manage.py migrateund änderte es, um python3 manage.py migrateden Fehler zu beheben .
Landocalrissian

9
Ich habe vergessen, meine virtuelle Umgebung zu aktivieren.
Bobort

46

Sie können mit versuchen python3 manage.py runserver. Für mich geht das.


27

Sie sollten Ihre virtuelle Umgebung aktivieren. In Terminal -> Quelle env / bin / enable wird jetzt ----> (env) in Ihrem Terminal angezeigt!

jetzt wird es funktionieren -> runserver.

Exc-Teil muss nicht gelöscht werden!


13

Ich habe das gleiche erlebt, aber dies wurde gelöst, indem ich mit spezifischem Python 3.6 wie folgt lief:

python3.6 manage.py runserver



9

Es ist am besten, eine virtuelle Umgebung zu erstellen und Ihren Django-Code in dieser virtuellen Umgebung auszuführen. Dies hilft dabei, Ihre vorhandenen Umgebungen nicht zu ändern. Hier sind die grundlegenden Schritte, um mit der virtuellen Umgebung und Django zu beginnen.

  1. Erstellen Sie ein neues Verzeichnis und legen Sie eine CD hinein.

    mkdir test , cd test

  2. Installieren und Erstellen einer virtuellen Umgebung.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Virtuelle Umgebung aktivieren: source venv/bin/activate

  4. Installieren Sie Django: pip install django

  5. Starten Sie ein neues Projekt: django-admin startproject myproject

  6. CD zu Ihrem Projekt und Projekt ausführen:

    cd myproject , python manage.py runserver

  7. Sie können Ihr Projekt hier sehen: http://127.0.0.1:8000/


gut gemacht! Durch dieses "Tutorial" wurde klar, wie es funktioniert. in django3der activatebefindet sich im .\venv\ScriptOrdner
michael-mammut

8

Nach dem Testen mit genauen Anweisungen (mit Python2 oder Python3 anstelle von "Python") habe ich festgestellt, dass dies NUR mit Python3 funktioniert, unabhängig davon, was im Tutorial steht.


3

Zum Ausführen von Python Version 3 müssen Sie python3stattdessen verwenden python.

Der letzte Befehl lautet also:

python3 manage.py runserver

3

Die Lösung ist unkompliziert. Die Ausnahme von manage.py besteht darin, dass Django beim Ausführen des Befehls mit Python nicht in der Lage ist, die genaue Python-Version vorherzusagen. Angenommen, Sie haben 3.6, 3.5, 3.8 und möglicherweise wurde nur eines dieser Versionen des Pip-Moduls verwendet, um Django zum Auflösen zu installieren dies entweder verwenden:

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

oder mit der genauen Python-Version (xx) steht:

pythonx.x manage.py <command>

Andernfalls kann die Verwendung virtueller Umgebungen nützlich sein, da jedes Pip-Django-Modul problemlos mit der Python-Version verknüpft werden kann

  • Erstelle env mit pyenv oder virtualenv
  • aktivieren (zB in virtualenv => virtualenv env)
  • Führen Sie den Befehl python manage.py aus

2

Sie müssen die virtuelle Umgebung aktivieren, in der Sie django installiert haben. Führen Sie dann diesen Befehl aus - python manage.py runserver


2

Ich habe die gleiche Situation gelöst.

INSTALLIERTE VERSION

Python 3.6, Django 2.1

LAGE

Ich habe Node.js in Windows 10 installiert. Nach python manage.py runserververursachtem Fehler.

ERROR

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

GRUND

Mein Python-Pfad wurde von Python-3.6 in Python-2.7 geändert. (3.6 ist in meinem PC korrekt.)

LÖSUNG

Python-Pfad korrigieren.


2

Ich hatte genau den gleichen Fehler, aber später stellte ich fest, dass ich vergessen hatte, die Conda-Umgebung zu aktivieren, in der Django und andere erforderliche Pakete installiert waren.

Lösung: Erstellen Sie eine Conda oder virtuelle Umgebung mit installiertem Django und aktivieren Sie sie, bevor Sie den folgenden Befehl verwenden: $ python manage.py migrate


1

Der Django-Administrator hat möglicherweise die falsche Datei. Ich habe das gleiche Problem festgestellt, das ich auf einem anderen Computer nicht im gleichen Einrichtungsablauf gefunden habe.

Nachdem ich zwei Projekte verglichen hatte, stellte ich bei manage.py und settings.py verschiedene Unterschiede fest. Dann wurde mir klar, dass ich ein 2.0-Django-Projekt erstellt und es mit python2 ausgeführt habe.

which django-adminin iterm laufen

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

Es sieht so aus, als hätte ich einen Django-Admin in Python3, von dem ich nicht wusste warum. Also habe ich versucht, das richtige Django-Amin zu bekommen.

pip show django

dann habe ich

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

In /Library/Python/2.7/site-packagesfand ich den Django-Admin

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

Also habe ich wieder ein Projekt von erstellt

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

dann renne

cd myproject
python manage.py runserver

erfolgreich🎉


1

Wir müssen eine virtuelle Umgebung innerhalb des Projekts erstellen, nicht außerhalb des Projekts. Dann wird es gelöst.


1

Es scheint, dass Sie mehr als eine Version von Python auf Ihrem Computer haben. Versuchen Sie, eine zu entfernen, und belassen Sie die einzige Version, mit der Sie Ihre Anwendung entwickelt haben.

Bei Bedarf können Sie Ihre Version aktualisieren, stellen Sie jedoch sicher, dass auf Ihrem Computer nur eine Python-Version vorhanden ist.

Ich hoffe das hilft.


1

Ich bin genau auf die gleiche Ausnahme gestoßen, weil ich vergessen habe, die virtuelle Umgebung zu aktivieren.


1

Folgendes könnte die möglichen Gründe sein:

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

Virtuelle Umgebung erstellen

$ virtualenv --python=python3 venv

So aktivieren Sie die virtuelle Umgebung

$ source venv/bin/activate

1

Ich habe auch den gleichen Fehler bekommen. Geben Sie hier die Bildbeschreibung ein

Dann ging ich zurück zu dem Ordner, in dem sich der Umgebungsordner befindet, und vergaß, eine virtuelle Umgebung zu aktivieren, sodass nur ich diesen Fehler erhielt. Geben Sie hier die Bildbeschreibung ein

Gehen Sie zu diesem Ordner und aktivieren Sie die virtuelle Umgebung.

$ source env/bin/activate

1

Außerdem wird im Lernprogramm empfohlen, eine virtuelle Umgebung zu verwenden (siehe Django-Dokumentation: https://docs.djangoproject.com/de/2.0/topics/install/#installing-official-release "). Sie können dies mit pipenv --three. Einmal tun Wenn Sie Django mit installiert pipenv install djangound Ihre virtuelle Umgebung mit aktiviert haben pipenv shell, verweist Python bei der Ausführung auf Python3 python manage.py runserver.

Pipenv-Dokumentation: https://pipenv.kennethreitz.org/


0

Ich frage mich, ob der Django zwar auf dem Container installiert ist, sich aber möglicherweise nicht auf dem Host-Computer befindet, auf dem Sie den Befehl ausführen. Wie wird dann der Befehl ausgeführt? Da funktionierten keine der oben genannten Lösungen für mich.

Ich fand den laufenden Container heraus und stieg in den laufenden Container ein, indem ich docker exec -it <container> bash den Befehl im Docker-Container ausführte. Da wir den voluminösen Container haben, werden die vorgenommenen Änderungen auch lokal wiedergegeben. Jeder Befehl, der ausgeführt werden soll, kann im laufenden Container ausgeführt werden


0

Für zukünftige Leser hatte auch ich das gleiche Problem. Es stellte sich heraus, dass die Installation von Python direkt von der Website sowie eine andere Version von Anaconda dieses Problem verursacht haben. Ich musste Python2.7 deinstallieren und nur Anaconda als einzige Distribution behalten.


0

Haben Sie die virtuelle Umgebung für Django betreten? Führen python -m venv myvenvSie aus, wenn Sie noch nicht installiert haben.


0

Mach einfach:

pipenv shell

dann wiederhole:

python manage.py runserver

und nicht from excwie oben vorgeschlagen löschen .

Prost!


0

Ich hatte das gleiche Problem und konnte es lösen. Es bezieht sich auf die von Ihnen installierte Version von Django. Einige davon werden von Python 2.7 nicht unterstützt. Wenn Sie Django mit pip installiert haben, bedeutet dies, dass Sie die neueste Version von dem installieren, was in Python 2.7 wahrscheinlich nicht unterstützt wird. Weitere Informationen dazu erhalten Sie hier . Ich würde empfehlen, Python 3 zu verwenden oder die Version von Django während der Installation anzugeben (dies ist 1.11 für Python 2.7).


0

Ich habe dieses Problem gelöst, um die Mehrfachversion von Python zu deinstallieren. Überprüfen Sie die offizielle Django-Dokumentation auf Python-Kompatibilität.

" Python-Kompatibilität

Django 2.1 unterstützt Python 3.5, 3.6 und 3.7. Django 2.0 ist die letzte Version, die Python 3.4 unterstützt. "

manage.py Datei

#!/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)

Wenn Sie "aus exc" aus der vorletzten Zeile dieses Codes entfernen, wird aufgrund mehrerer Python-Versionen ein weiterer Fehler generiert.


0

Aktivieren Sie env mit dem folgenden Befehl

  source  pathetoYourEnv/bin/activate

Führen Sie dann den Befehl aus

python manage.py runserver

0

Sie sollten Ihre virtuelle Umgebung starten .

wie es geht?

zuerst mit Terminal-CD in das Verzeichnis mit manage.py

$source <myvenv>/bin/activate Geben Sie dann replace mit Ihrem Namen für die virtuelle Umgebung ohne eckige Klammern ein.

Ein weiteres Problem kann sein, dass Ihr Stammverzeichnis und venv nicht übereinstimmen. Die Struktur sollte ungefähr so ​​aussehen:

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

Das ist Ihre virtuelle Umgebung und manage.py sollte sich im selben Ordner befinden. Die Lösung besteht darin, das Projekt neu zu starten. Wenn dieser Fehler auftritt, müssen Sie noch nichts codiert haben. Starten Sie ihn daher neu.


0

Ich habe mein Problem auch gelöst, als ich meine virtuelle Umgebung aktiviert habe mit:

source bin/activate

0

Ich hatte dieses Problem (Mac) und befolgte die Anweisungen auf der folgenden Seite, um die virtuelle Umgebung zu installieren und zu aktivieren

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

$ cd [Top-Level-Django-Projekt-Verzeichnis]

$ python3 -m pip install --user virtualenv

$ python3 -m venv env

$ source env / bin / enable

Nachdem ich die virtuelle Umgebung installiert und aktiviert hatte, überprüfte ich sie

$ welche Python

Dann habe ich django in die virtuelle Umgebung installiert

$ pip installiere django

Und dann könnte ich meine App ausführen

$ python3 manage.py runserver

Als ich zum nächsten Teil des Tutorials kam

$ python manage.py startapp-Umfragen

Ich habe einen anderen Fehler festgestellt:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

Ich entfernte

from exc

und es erstellte dann das Umfrageverzeichnis

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.