Как решить SyntaxError на autogenerated manage.py?

Я следую учебнику Django https://docs.djangoproject.com/es/1.10/intro/tutorial01/

Я создал "mysite" фиктивный проект (мой самый первый) и попытаюсь проверить его, не изменяя его.

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

Может кто-нибудь, пожалуйста, помогите мне?

Обновление: добавление содержимого 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 installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        ) from exc
    execute_from_command_line(sys.argv)

Ответы

Ответ 1

Убедитесь, что с версией python вы подключаете django.

Когда вы устанавливаете django, используя только pip install django, тогда вам нужно запустить python manage.py startapp else, если вы использовали pip3. Нажмите здесь, чтобы просмотреть пример терминала install django, тогда вам нужно запустить python3 manage.py startapp

Ответ 2

Вы можете попробовать с python3 manage.py runserver. Меня устраивает.

Ответ 3

вы должны активировать свою виртуальную среду. В терминале → источник env/bin/activate теперь будет отображаться → (env) в вашем терминале!

теперь он будет работать → servererver.

Не нужно удалять лишнюю часть!

Ответ 5

Я испытывал то же самое, но это было решено, работая с конкретным python 3.6, как показано ниже:

python3.6 manage.py runserver

Ответ 6

После тестирования с точными инструкциями (с использованием python2 или python3 вместо "python") я констатировал, что независимо от того, что говорит учебник, это работает ТОЛЬКО с python3.

Ответ 7

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

  1. Создайте в нем новый каталог и cd.

    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/

Ответ 8

Просто удалите это from exec части from exec чтобы теперь что-то вроде

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 installed and "
            "available on your PYTHONPATH environment variable? Did you "
            "forget to activate a virtual environment?"
        )
    execute_from_command_line(sys.argv)

Ответ 9

Вы должны активировать виртуальную среду, в которой вы установили django. Затем запустите эту команду - python manage.py runningerver

Ответ 10

Кроме того, в учебном пособии рекомендуется использовать виртуальную среду (см. Документацию по 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://docs.pipenv.org/

Ответ 11

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

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

запустить, which django-admin в iterm

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

Похоже, я получил django-admin в 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: [email protected]
License: BSD
Location: /Library/Python/2.7/site-packages
Requires: pytz

В /Library/Python/2.7/site-packages я нашел django-admin

/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

succeeded🎉

Ответ 12

Мы должны создать виртуальную среду внутри проекта, а не вне проекта. Тогда это решит.

Ответ 13

Кажется, у вас на компьютере несколько версий Python. Попробуйте удалить его и оставите единственную версию, которую вы использовали для разработки вашего приложения.

Если необходимо, вы можете обновить свою версию, но убедитесь, что на вашем компьютере установлена только одна версия Python.

Надеюсь, это поможет.

Ответ 14

Мне интересно, хотя django установлен в контейнер, он может быть не на хост-машине, где вы используете команду. Тогда как будет выполняться команда. Поэтому, поскольку для меня не работали никакие выше решения.

Я узнал о запущенном контейнере и docker exec -it <container> bash в запущенный контейнер с помощью docker exec -it <container> bash затем docker exec -it <container> bash команду в контейнере докера. Поскольку у нас есть объемный контейнер, сделанные изменения также отразятся локально. Запуск любой команды может выполняться внутри запущенного контейнера

Ответ 15

Для будущих читателей у меня тоже была такая же проблема. Оказывается, установка Python непосредственно с сайта, а также другая версия от Anaconda вызвала эту проблему. Мне пришлось удалить Python2.7 и сохранить анаконду только в качестве единственного дистрибутива.

Ответ 16

Вы вошли в виртуальную среду для django? Запустите python -m venv myvenv если вы еще не установили.

Ответ 17

Просто делать:

pipenv shell

затем повторите:

python manage.py runserver

и не удалять from exc как было предложено выше.

ура!

Ответ 18

У меня была такая же проблема, и я мог ее решить. Это связано с версией Django, которую вы установили, некоторые из них не поддерживаются python 2.7. Если вы установили Django с pip, это означает, что вы устанавливаете последнюю версию версии, которая, вероятно, не поддерживается в python 2.7, вы можете получить дополнительную информацию об этом здесь. Я бы предложил python 3 или указать версию Django во время установки (что равно 1.11 для python 2.7).

Ответ 19

просто вы описываете свою версию python

=> python3.5 manage.py runningerver

(моя версия python = 3.5)

Ответ 20

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

" Python совместимость

Django 2.1 поддерживает Python 3.5, 3.6 и 3.7. Django 2.0 - последняя версия, поддерживающая Python 3.4. "

файл 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 installed and "
        "available on your PYTHONPATH environment variable? Did you "
        "forget to activate a virtual environment?"
      ) from exc
    execute_from_command_line(sys.argv)

Если удалить "from exc" из второй последней строки этого кода, появится еще одна ошибка из-за нескольких версий Python.

Ответ 21

активировать env с помощью следующей команды

  source  pathetoYourEnv/bin/activate

затем выполните команду

python manage.py runserver

Ответ 22

Я решил ту же ситуацию.

УСТАНОВЛЕННАЯ ВЕРСИЯ

питон 3.6, джанго 2.1

СИТУАЦИЯ

Я установил Node.js в Windows 10. После python manage.py runserver вызвал ошибку.

ОШИБКА

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

ПРИЧИНА

Мой путь к python изменился на python-2.7 с python-3.6. (3.6 правильно в моем ПК.)

РЕШЕНИЕ

Исправить путь к питону.

Ответ 23

Вы должны начать свою виртуальную среду,

как это сделать?

сначала с терминала CD в каталог, содержащий manage.py

затем введите $source <myvenv>/bin/activate заменить вместо вашего имени виртуальной среды без угловых скобок.

Другая проблема может в том, что ваш корневой каталог и venv не совпадают. Структура должна быть примерно такой:

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

То есть ваша виртуальная среда и manage.py должны находиться в одной папке. Решением этого является перезапуск проекта. Если вы столкнулись с этой ошибкой, значит, вы еще ничего не кодировали, поэтому перезапустите.

Ответ 24

Я попал в одно и то же исключение, потому что забыл активировать виртуальную среду.

Ответ 25

Следующие могут быть возможные причины,

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

Ответ 26

У меня была точно такая же ошибка, но потом я узнал, что забыл активировать среду conda, в которой были установлены django и другие необходимые пакеты.

Решение: Создайте conda или виртуальную среду с установленным django и активируйте ее, прежде чем использовать команду: $ python manage.py migrate