Jak rozwiązać błąd SyntaxError na wygenerowanym automatycznie manage.py?


111

Śledzę samouczek Django https://docs.djangoproject.com/es/1.10/intro/tutorial01/

Stworzyłem fałszywy projekt „mysite” (mój pierwszy) i próbuję go przetestować bez modyfikowania.

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

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

Otrzymuję błąd SyntaxError dotyczący pliku, który został wygenerowany przez sam system. I wydaje mi się, że nie mogę znaleźć nikogo, kto przeszedł przez ten sam problem.

Dodam trochę danych o mojej konfiguracji na wypadek, gdyby były przydatne

$ 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

Czy ktoś mógłby mi pomóc?

Aktualizacja: dodanie zawartości automatycznie generowanego pliku 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)

Prześlij zawartość całego pliku (lub przynajmniej większej jego części), w którym występuje błąd składni.
Scovetta

11
Ten plik jest przeznaczony do użytku z Pythonem 3 (zauważ, że to pierwsza linia!) I nie będzie działać w 2.7.
jasonharper

Witryna z samouczkami mówi, że jeśli jakaś część kodu nie będzie działać z wersją 2.7, dodadzą modyfikacje potrzebne w komentarzach. Nie było tam żadnych modyfikacji, więc założyłem, że zadziała ...
Frank

Odpowiedzi:


108

Upewnij się, z którą wersją Pythona łączysz django (upewnij się, że aktywowałeś wirtualne env, jeśli używasz).

Kiedy instalujesz django używając tylko

pip install django 

wtedy musisz biec

python manage.py startapp <yourApp name>

inaczej, jeśli użyłeś:

pip3 install django

wtedy musisz biec

python3 manage.py startapp <yourapp name>

Odnosić się:
wprowadź opis obrazu tutaj


11
Miałem ten sam problem ze python manage.py migratezmianą go, aby python3 manage.py migratenaprawić błąd.
landocalrissian

9
Zapomniałem aktywować moje wirtualne środowisko.
Bobort


27

powinieneś aktywować swoje wirtualne środowisko. W terminalu -> źródło env / bin / aktywuj teraz będzie ----> (env) na twoim terminalu!

teraz to zadziała -> runerver.

Nie ma potrzeby usuwania części exc!


13

Doświadczyłem tego samego, ale problem został rozwiązany, uruchamiając konkretny Python 3.6, jak poniżej:

python3.6 manage.py runserver



9

Najlepiej jest utworzyć środowisko wirtualne i uruchomić kod Django w tym środowisku wirtualnym, co pomaga nie zmieniać istniejących środowisk. Oto podstawowe kroki, aby rozpocząć pracę ze środowiskiem wirtualnym i Django.

  1. Utwórz nowy katalog i wejdź do niego.

    mkdir test , cd test

  2. Zainstaluj i utwórz środowisko wirtualne.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Aktywuj środowisko wirtualne: source venv/bin/activate

  4. Zainstaluj Django: pip install django

  5. Rozpocznij nowy projekt: django-admin startproject myproject

  6. cd do swojego projektu i uruchom projekt:

    cd myproject , python manage.py runserver

  7. Tutaj możesz zobaczyć swój projekt: http://127.0.0.1:8000/


dobra robota! dzięki temu „samouczkowi” było jasne, jak to działa. w znajduje się w folderzedjango3activate.\venv\Script
michael-mammut

8

Po przetestowaniu z precyzyjnymi instrukcjami (używając python2 lub python3 zamiast tylko „python”) stwierdziłem, że bez względu na to, co mówi samouczek, działa to TYLKO z python3.


3

Aby uruchomić Python w wersji 3, musisz użyć python3zamiast python.

Tak więc ostatecznym poleceniem będzie:

python3 manage.py runserver

3

Rozwiązanie jest proste. wyjątkiem od manage.py jest to, że podczas uruchamiania polecenia w Pythonie Django nie jest w stanie przewidzieć dokładnej wersji Pythona, powiedzmy, że możesz mieć 3.6, 3.5, 3.8 i być może tylko jedna z tych wersji modułu pip został użyty do zainstalowania Django do rozwiązania to albo użyj:

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

lub używając dokładnej wersji Pythona (xx):

pythonx.x manage.py <command>

w przeciwnym razie użycie środowisk wirtualnych może się przydać, ponieważ łatwo łączy każdy moduł pip django z wersją Pythona

  • utwórz env za pomocą pyenv lub virtualenv
  • aktywuj (np. w virtualenv => virtualenv env)
  • uruchom za pomocą polecenia python manage.py

2

Musisz aktywować środowisko wirtualne, w którym zainstalowałeś django. Następnie uruchom to polecenie - python manage.py runningerver


2

Rozwiązałem tę samą sytuację.

WERSJA ZAINSTALOWANA

python 3.6, django 2.1

SYTUACJA

Zainstalowałem Node.js w Windows 10. Po python manage.py runserverwywołaniu błędu.

BŁĄD

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

POWÓD

Moja ścieżka do Pythona została zmieniona na python-2.7 z python-3.6. (3.6 jest poprawna na moim komputerze.)

ROZWIĄZANIE

Napraw ścieżkę Pythona.


2

Miałem dokładnie ten sam błąd, ale później dowiedziałem się, że zapomniałem aktywować środowiska Conda, które miało zainstalowane django i inne wymagane pakiety.

Rozwiązanie: utwórz condę lub środowisko wirtualne z zainstalowanym django i aktywuj je przed użyciem polecenia: $ python manage.py migrate


1

Django-admin może być złym plikiem, napotkałem ten sam problem, którego nie znalazłem na innym komputerze przy tej samej konfiguracji.

Po porównaniu dwóch projektów znalazłem kilka różnic w manage.py i settings.py, a potem zdałem sobie sprawę, że stworzyłem projekt 2.0 django, ale uruchomiłem go z python2.

uruchomić which django-adminw iterm

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

Wygląda na to, że mam django-admin w pythonie3, ale nie wiedziałem dlaczego, więc próbowałem uzyskać poprawny django-amin.

pip show django

wtedy dostałem

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

W /Library/Python/2.7/site-packages, znalazłem plik django-admin

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

Więc stworzyłem projekt ponownie przez

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

następnie uruchomić

cd myproject
python manage.py runserver

udało się🎉


1

Musimy stworzyć wirtualne środowisko wewnątrz projektu, a nie poza nim .. Wtedy to się rozwiąże.


1

Wygląda na to, że masz na swoim komputerze więcej niż jedną wersję Pythona. Spróbuj usunąć jedną i pozostaw jedyną wersję, której użyłeś do stworzenia swojej aplikacji.

W razie potrzeby możesz zaktualizować swoją wersję, ale upewnij się, że masz tylko jedną wersję Pythona na swoim komputerze.

Mam nadzieję, że to pomoże.



1

Oto możliwe przyczyny,

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

Tworzenie wirtualnego środowiska

$ virtualenv --python=python3 venv

Aby aktywować środowisko wirtualne

$ source venv/bin/activate

1

Otrzymałem również ten sam błąd. wprowadź opis obrazu tutaj

Następnie wróciłem do folderu, w którym znajduje się folder środowiska i zapomniałem aktywować środowisko wirtualne, więc tylko ja otrzymywałem ten błąd. wprowadź opis obrazu tutaj

Przejdź do tego folderu i aktywuj środowisko wirtualne.

$ source env/bin/activate

1

Samouczek zaleca również korzystanie ze środowiska wirtualnego (zobacz dokumentację Django: https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release "). Możesz to zrobić za pomocą pipenv --three. Raz. zainstalowałeś django pipenv install djangoi aktywowałeś swoje środowisko wirtualne za pomocą pipenv shell, python będzie odwoływał się do python3 podczas wykonywania python manage.py runserver.

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


0

Zastanawiam się, że chociaż django jest zainstalowane w kontenerze, może nie znajdować się na maszynie hosta, na którym uruchamiasz polecenie. Wtedy jak będzie działać polecenie. Więc ponieważ żadne z powyższych rozwiązań nie zadziałało dla mnie.

Znalazłem działający kontener i dostałem się do działającego kontenera za pomocą, docker exec -it <container> bash a następnie uruchomiłem polecenie wewnątrz kontenera docker. Ponieważ mamy kontener o objętości, wprowadzone zmiany będą również odzwierciedlać lokalnie. Każde polecenie, które ma zostać uruchomione, można uruchomić w uruchomionym kontenerze


0

Dla przyszłych czytelników też miałem ten sam problem. Okazuje się, że problem spowodował instalacja Pythona bezpośrednio ze strony internetowej, a także posiadanie innej wersji Anacondy. Musiałem odinstalować Python2.7 i zachować anacondę jako jedyną dystrybucję.


0

Czy wszedłeś do wirtualnego środowiska django? Uruchom, python -m venv myvenvjeśli jeszcze nie zainstalowałeś.


0

Po prostu zrób:

pipenv shell

następnie powtórz:

python manage.py runserver

i nie usuwaj, from excjak sugerowano powyżej.

Twoje zdrowie!


0

Miałem ten sam problem i mogłem go rozwiązać. Jest to związane z wersją Django, którą zainstalowałeś, niektóre z nich nie są obsługiwane przez python 2.7. Jeśli zainstalowałeś Django z pip, oznacza to, że instalujesz najnowszą wersję tego, która prawdopodobnie nie jest obsługiwana w Pythonie 2.7. Więcej informacji na ten temat znajdziesz tutaj . Sugerowałbym pythona 3 lub określenie wersji Django podczas instalacji (czyli 1.11 dla Pythona 2.7).


0

Rozwiązałem ten problem, aby odinstalować wiele wersji Pythona. Sprawdź oficjalną dokumentację Django pod kątem zgodności z Pythonem.

Zgodność z Pythonem

Django 2.1 obsługuje Python 3.5, 3.6 i 3.7. Django 2.0 to ostatnia wersja obsługująca Python 3.4. "

plik 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)

Jeśli usunięcie „z exc” z przedostatniej linii tego kodu spowoduje kolejny błąd z powodu wielu wersji Pythona.


0

aktywuj env za pomocą następującego polecenia

  source  pathetoYourEnv/bin/activate

następnie uruchom polecenie

python manage.py runserver

0

Powinieneś uruchomić swoje wirtualne środowisko ,

jak to zrobić?

najpierw z terminalem cd do katalogu zawierającego manage.py

następnie wpisz $source <myvenv>/bin/activate zamień na nazwę środowiska wirtualnego, bez nawiasów kątowych.

Innym problemem może być niezgodność katalogu głównego i pliku venv. Struktura powinna wyglądać mniej więcej tak:

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

To jest Twoje środowisko wirtualne, a manage.py powinno znajdować się w tym samym folderze. Rozwiązaniem jest ponowne uruchomienie projektu. Jeśli napotkasz ten błąd, nie musisz jeszcze niczego kodować, więc uruchom ponownie.


0

Rozwiązałem również mój problem, gdy aktywowałem moje środowisko wirtualne za pomocą:

source bin/activate

0

Miałem ten problem (Mac) i postępowałem zgodnie z instrukcjami na poniższej stronie, aby zainstalować i aktywować środowisko wirtualne

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

$ cd [katalog-najwyższego-poziomu-projektu-django]

$ python3 -m pip install --user virtualenv

$ python3 -m venv env

$ source env / bin / activ

Po zainstalowaniu i aktywowaniu wirtualnego środowiska env sprawdziłem to

$ który python

Następnie zainstalowałem django w wirtualnym env

$ pip zainstaluj django

A potem mogłem uruchomić moją aplikację

$ python3 manage.py runerver

Kiedy dotarłem do kolejnej części tutoriala

$ python manage.py startapp polls

Napotkałem inny błąd:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

usunąłem

from exc

a następnie utworzył katalog polls

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.