Як вирішити SyntaxError на автогенерованому Manag.py?


110

Я дотримуюся підручника Django https://docs.djangoproject.com/es/1.10/intro/tutorial01/

Я створив «мізерний» манекен-проект (найперший мій) і спробую перевірити його, не змінюючи його.

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

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

Я отримую SyntaxError для файлу, який генерується самою системою. І я, здається, не в змозі знайти когось іншого, хто пройшов через те саме питання.

Я додаю деякі дані моєї установки, якщо вони можуть бути корисними

$ 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

Може хтось, будь ласка, допоможе мені?

Оновлення: додавання вмісту автогенерованого Manag.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)

Будь ласка, опублікуйте вміст усього файлу (або принаймні більше його), який має синтаксичну помилку.
Сковетта

10
Цей файл призначений для використання з Python 3 (зауважте, що це перший рядок!), І він не працюватиме в 2.7.
jasonharper

У веб-підручнику йдеться про те, що коли частина коду не працюватиме з 2.7, вони додадуть потрібні зміни в коментарях. У ньому не було перелічених змін, тож я припустив, що це спрацює ...
Френк

Відповіді:


106

Переконайтеся, з якою версією пітона ви підключаєте django (Обов'язково активуйте віртуальну програму env, якщо ви використовуєте будь-яку).

Коли ви встановлюєте django за допомогою просто

pip install django 

тоді треба бігти

python manage.py startapp <yourApp name>

ще якщо ви використовували:

pip3 install django

тоді треба бігти

python3 manage.py startapp <yourapp name>

Посилання:
введіть тут опис зображення


11
Була така ж проблема з python manage.py migrateі змінила її, щоб python3 manage.py migrateвиправити помилку.
landocalrissian

9
Я забув активувати своє віртуальне оточення.
Боборт


27

ви повинні активувати своє віртуальне середовище. У терміналі -> source env / bin / activate зараз на вашому терміналі з'явиться ----> (env)!

тепер він буде працювати -> runserver.

Не потрібно видаляти частину ексклюзивів!


13

У мене було те саме, але це було вирішено за допомогою конкретного python 3.6, як показано нижче:

python3.6 manage.py runserver



9

Найкраще створити віртуальне середовище та запустити свій код Django всередині цього віртуального середовища, це допоможе не змінювати існуючі середовища. Ось основні кроки для початку з віртуального середовища та Django.

  1. Створіть новий Каталог та вставте його в компакт-диск

    mkdir test , cd test

  2. Встановлення та створення віртуального середовища.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Активуйте віртуальне середовище: source venv/bin/activate

  4. Встановити Django: pip install django

  5. Почніть новий проект: django-admin startproject myproject

  6. cd до вашого проекту та запустіть проект:

    cd myproject , python manage.py runserver

  7. Ви можете побачити свій проект тут: http://127.0.0.1:8000/


молодець! по цьому "підручнику" було зрозуміло, як це працює. в знаходиться в папціdjango3activate.\venv\Script
майкл-Mammut

8

Після тестування з точними інструкціями (використовуючи python2 або python3 замість просто "python"), я констатував, що незалежно від того, що підручник каже, це працює ТІЛЬКИ з python3.


3

Для запуску Python версії 3 вам потрібно використовувати python3замість python.

Отже, остаточною командою буде:

python3 manage.py runserver

3

Рішення прямолінійне. виняток з Manag.py полягає в тому, що при виконанні команди з python Django не в змозі передбачити точну версію python, скажімо, у вас може бути 3.6, 3.5, 3.8, і, можливо, для встановлення Django для встановлення Django був використаний лише один із цих версій. це або використання:

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

або використовуючи точну версію пітона (xx):

pythonx.x manage.py <command>

в іншому випадку використання віртуальних середовищ може стати в нагоді, оскільки пов'язане з будь-яким модулем pip django легко з версією python

  • створити env з pyenv або virtualenv
  • активувати (наприклад, у virtualenv => virtualenv env)
  • запустити за допомогою команди python Manag.py

2

Ви повинні активувати віртуальне середовище, де встановлено django. Потім запустіть цю команду - python Manag.py runserver


2

Я вирішив таку ж ситуацію.

ВСТАНОВЛЕНА ВЕРСІЯ

python 3.6, django 2.1

СИТУАЦІЯ

Я встановив Node.js у Windows 10. Після python manage.py runserverвикликаної помилки.

ПОМИЛКА

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

ПРИЧИНА

Мій шлях пітона змінився на python-2.7 з python-3.6. (В моєму ПК 3.6 правильно.)

РІШЕННЯ

Виправити шлях пітона.


2

У мене була така ж помилка, але потім я з’ясував, що забуваю активувати середовище conda, в якому було встановлено django та інші необхідні пакети.

Рішення: Створіть конду чи віртуальне середовище із встановленим django та активуйте його перед тим, як використовувати команду: $ python manage.py migrate


1

Django-admin, можливо, неправильний файл. Я зустрів ту саму проблему, яку я не знайшов на іншому комп'ютері однакового потоку налаштування.

Порівнюючи два проекти, я виявив кілька відмінностей у manag.py та settings.py, то зрозумів, що створив проект django 2.0, але запустив його з python2.

бігати which django-adminв ітермі

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

Схоже, я отримав django-адмін в python3, якого я не знав чому. Тому я спробував отримати правильний django-amin.

pip show django

тоді я отримав

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

В /Library/Python/2.7/site-packages, я знайшов django-адмін

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

Тому я знову створив проект

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

потім біжи

cd myproject
python manage.py runserver

вдалося🎉


1

Ми повинні створити віртуальне середовище всередині проекту, а не за межами проекту. Тоді це буде вирішено ..


1

Здається, у вас на комп’ютері є більше однієї версії Python. Спробуйте видалити її та залиште єдину версію, яку ви використовували для розробки програми.

Якщо потрібно, ви можете оновити свою версію, але переконайтеся, що на комп’ютері є лише одна версія Python.

Я сподіваюся, що це допомагає.



1

Можливими причинами можуть бути наступні,

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

Для створення віртуального середовища

$ virtualenv --python=python3 venv

Для активації віртуального середовища

$ source venv/bin/activate

1

Я також отримував ту саму помилку. введіть тут опис зображення

Потім я повернувся до папки, де папка оточення, і я забув активувати віртуальне середовище, тому тільки я отримав цю помилку. введіть тут опис зображення

Перейдіть до цієї папки та активуйте віртуальне середовище.

$ source env/bin/activate

1

Також підручник рекомендує використовувати віртуальне середовище (див. Документацію про Django: https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release "). Це можна зробити за допомогою pipenv --three. ви встановили django з pipenv install djangoта активували своє віртуальне середовище за допомогою pipenv shell, python буде звертатися до python3 при виконанні python manage.py runserver.

Документація Pipenv: https://pipenv.kennethreitz.org/


0

Що мені цікаво, хоча django встановлено в контейнер, він може бути не в хост-машині, де ви виконуєте команду. Тоді як буде працювати команда. Отже, оскільки жодне вище рішення не працювало на мене.

Я знайшов запущений контейнер і потрапив у запущений контейнер, використовуючи docker exec -it <container> bash потім запустив команду всередині контейнера docker. Оскільки у нас є об'ємний контейнер, зроблені зміни також відобразяться локально. Що будь-коли команда, яку потрібно запустити, може бути запущена всередині запущеного контейнера


0

Для майбутніх читачів у мене теж був той самий випуск. Виявляється, встановлення Python безпосередньо з веб-сайту, а також наявність іншої версії від Anaconda викликали цю проблему. Мені довелося видалити Python2.7 і зберегти лише анаконда як єдиний дистрибутив.


0

Ви увійшли у віртуальне середовище для джанго? Запустіть, python -m venv myvenvякщо ви ще не встановлені.



0

У мене була така ж проблема і могла її вирішити. Це пов'язано з встановленою вами версією Django, деякі з них не підтримуються python 2.7. Якщо ви встановили Django з допомогою pip, це означає, що ви встановлюєте останню версію версії, яка, ймовірно, не підтримується в python 2.7, ви можете отримати більше інформації про це тут . Я б запропонував python 3 або вказав версію Django під час встановлення (що становить 1,11 для python 2.7).


0

Я вирішив цю проблему, щоб видалити кілька версій Python. Перевірте офіційну документацію Django на сумісність Python.

" Сумісність Python

Django 2.1 підтримує Python 3.5, 3.6 та 3.7. Django 2.0 - це остання версія, яка підтримує Python 3.4. "

file.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)

Якщо вилучення "з вилучення" з другого останнього рядка цього коду призведе до появи іншої помилки через кілька версій Python.


0

активувати env наступною командою

  source  pathetoYourEnv/bin/activate

потім запустіть команду

python manage.py runserver

0

Ви повинні запустити своє віртуальне середовище ,

як це зробити?

спочатку з терміналом CD в каталог, що містить Manag.py

потім введіть $source <myvenv>/bin/activate заміну з вами назви віртуальної середовища, без кутових дужок.

Інша проблема може полягати в тому, що ваша коренева директорія та venv не відповідають. Структура повинна бути приблизно такою:

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

Це ваше віртуальне середовище, а management.py має знаходитися в одній папці. Вирішенням цього є перезапуск проекту. Якщо ви зіткнулися з цією помилкою, ви, мабуть, ще нічого не кодували, тому перезапустіть.


0

Я також вирішив свою проблему, коли активував своє віртуальне середовище за допомогою:

source bin/activate

0

У мене виникла ця проблема (Mac) та дотримувалася вказівок на сторінці нижче, щоб встановити та активувати віртуальне середовище

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

$ cd [найвищий рівень-django-project-dir]

$ python3 -m pip install - користувач virtualenv

$ python3 -m venv env

$ source env / bin / activate

Після того, як я встановив і активував віртуальне оточення, я перевірив це

$ який пітон

Тоді я встановив django у віртуальне оточення

$ pip встановити django

І тоді я міг запустити свою програму

$ python3 Manag.py runserver

Коли я перейшов до наступної частини підручника

опитування $ python Manag.py startapp

У мене виникла ще одна помилка:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

Я зняв

from exc

а потім створив каталог опитувань

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.