Как решить проблему SyntaxError на автоматически созданном manage.py?


111

Я следую учебнику 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

Кто-нибудь может мне помочь?

Обновление: добавление содержимого автоматически сгенерированного 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)

Пожалуйста, опубликуйте содержимое всего файла (или хотя бы большей его части) с синтаксической ошибкой.
Scovetta 05

11
Этот файл предназначен для использования с Python 3 (обратите внимание, что это первая строка!) И не будет работать в 2.7.
jasonharper 05

В веб-руководстве говорится, что, если какая-то часть кода не будет работать с 2.7, они добавят необходимые изменения в комментарии. В этом списке не было никаких модификаций, поэтому я предположил, что это сработает ...
Франк

Ответы:


109

Убедитесь, с какой версией python вы подключаете 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
Я забыл активировать свой виртуальный env.
Bobort


28

вы должны активировать свою виртуальную среду. В терминале -> исходный 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.


4

Решение простое. исключение из manage.py связано с тем, что при запуске команды с python Django не может предсказать точную версию python, скажем, у вас может быть 3.6, 3.5, 3.8 и, возможно, только один из этих версий pip-модуля использовался для установки Django для решения это либо используйте:

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

или используя точную версию Python (xx):

pythonx.x manage.py <command>

иначе использование виртуальных сред может пригодиться, потому что оно легко связывает любой модуль pip django с версией python

  • создать env с помощью pyenv или virtualenv
  • активировать (например, в virtualenv => virtualenv env)
  • запустить с помощью команды python manage.py

3

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

Итак, последняя команда будет такой:

python3 manage.py runserver

2

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


2

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

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

Python 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 правильно.)

РЕШЕНИЕ

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


2

Возможными причинами могут быть следующие:

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

2. Большую часть времени проблема заключается в другой версии Python. +1 за этот ответ.
PSN,

2

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

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


1

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

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

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

/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: foundation@djangoproject.com
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

удалось🎉


1

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


1

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

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

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



1

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

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

Перейдите в эту папку и активируйте виртуальную среду.

$ source env/bin/activate

1

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

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


0

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

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


0

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


0

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



0

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


0

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

" Совместимость с 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'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)

Если удаление «from exc» из второй последней строки этого кода вызовет другую ошибку из-за нескольких версий Python.


0

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

  source  pathetoYourEnv/bin/activate

затем запустите команду

python manage.py runserver

0

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

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

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

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

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

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

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



0

У меня была эта проблема (Mac), и я следовал инструкциям на следующей странице, чтобы установить и активировать виртуальную среду.

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

$ cd [каталог-проекта-django верхнего уровня]

$ python3 -m pip install --user virtualenv

$ python3 -m venv env

$ source env / bin / активировать

После того, как я установил и активировал виртуальный env, я проверил его.

$ какой питон

Затем я установил django в виртуальную среду

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

И тогда я мог запустить свое приложение

$ python3 manage.py runserver

Когда я дошел до следующей части урока

$ python manage.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.