Como resolver SyntaxError em autogenerated manage.py?

111

Estou seguindo o tutorial do Django https://docs.djangoproject.com/es/1.10/intro/tutorial01/

Eu criei um projeto fictício "meusite" (meu primeiro) e tento testá-lo sem alterá-lo.

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

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

Estou recebendo um SyntaxError em um arquivo que foi gerado pelo próprio sistema. E parece que não consigo encontrar ninguém que tenha passado pelo mesmo problema.

Vou adicionar alguns dados da minha configuração no caso de ser útil

$ 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

Alguém pode me ajudar por favor?

Atualização: adicionando conteúdo de manage.py autogenerated

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)
Frank
fonte
Publique o conteúdo de todo o arquivo (ou pelo menos mais dele) que contém o erro de sintaxe.
Scovetta
11
Esse arquivo deve ser usado com Python 3 (observe que é a primeira linha!) E não funcionará no 2.7.
jasonharper
O tutorial web diz que, quando alguma parte do código não funcionar com o 2.7, eles vão adicionar as modificações necessárias nos comentários. Não havia modificações listadas, então presumi que funcionaria ...
Frank

Respostas:

107

Certifique-se de qual versão do python você conecta ao django (certifique-se de ativar o env virtual se estiver usando algum).

Quando você instala o django usando apenas

pip install django 

então você tem que correr

python manage.py startapp <yourApp name>

mais se você usou:

pip3 install django

então você tem que correr

python3 manage.py startapp <yourapp name>

Referir:
insira a descrição da imagem aqui

Lobsang
fonte
11
Tive o mesmo problema com python manage.py migratee alterando para python3 manage.py migrateconsertar o erro.
landocalrissian
9
Esqueci de ativar meu env virtual.
Bobort 01 de
48

Você pode tentar python3 manage.py runserver. Funciona para mim.

Fernando
fonte
27

você deve ativar seu ambiente virtual. No terminal -> source env / bin / activate agora haverá ----> (env) em seu terminal exibido!

agora vai funcionar -> runserver.

Não há necessidade de deletar parte exc!

Aditya Sinha
fonte
13

Eu estava experimentando o mesmo, mas isso foi resolvido executando com o python 3.6 específico conforme abaixo:

python3.6 manage.py runserver
Martin Karari
fonte
12

Basta ativar seu ambiente virtual.

Esir Kings
fonte
9

É melhor criar um ambiente virtual e executar seu código Django dentro deste ambiente virtual, isso ajuda a não alterar seus ambientes existentes. Aqui estão as etapas básicas para começar com o ambiente virtual e Django.

  1. Crie um novo diretório e faça cd nele.

    mkdir test , cd test

  2. Instale e crie um ambiente virtual.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Ative o ambiente virtual: source venv/bin/activate

  4. Instale o Django: pip install django

  5. Comece um novo projeto: django-admin startproject myproject

  6. cd para o seu projeto e execute o projeto:

    cd myproject , python manage.py runserver

  7. Você pode ver seu projeto aqui: http://127.0.0.1:8000/

Sbk3824
fonte
bem feito! por este "tutorial" ficou claro como funciona. django3no activateestá localizado na .\venv\Scriptpasta
michael-mammut
8

Depois de testar com instruções precisas (usando python2 ou python3 em vez de apenas "python"), constatei que não importa o que o tutorial diga, isso funciona SOMENTE com python3.

Frank
fonte
3

Para executar o Python versão 3, você precisa usar em python3vez de python.

Portanto, o comando final será:

python3 manage.py runserver
Parth Patel
fonte
3

A solução é simples. a exceção do manage.py é porque ao executar o comando com python, o Django é incapaz de prever a versão exata do python, digamos que você pode ter 3.6, 3.5, 3.8 e talvez apenas uma dessas versões do módulo pip foi usado para instalar o Django para resolver isso pode usar:

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

ou usando a versão exata do python (xx) representa:

pythonx.x manage.py <command>

caso contrário, o uso de ambientes virtuais pode ser útil porque relaciona facilmente qualquer módulo pip django com a versão python

  • criar env com pyenv ou virtualenv
  • ativar (por exemplo, em virtualenv => env virtualenv)
  • executar usando o comando python manage.py
Optimus
fonte
2

Você deve ativar o ambiente virtual onde instalou o django. Em seguida, execute este comando - python manage.py runserver

Wasique Ansari
fonte
2

Resolvi a mesma situação.

VERSÃO INSTALADA

python 3.6, django 2.1

SITUAÇÃO

Instalei o Node.js no Windows 10. Depois python manage.py runservercausou erro.

ERRO

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

RAZÃO

Meu caminho python mudou para python-2.7 de python-3.6. (3.6 está correto no meu PC.)

SOLUÇÃO

Corrigir o caminho do python.

Otsuki Takaya
fonte
2

Eu tive exatamente o mesmo erro, mas depois descobri que esqueci de ativar o ambiente conda que tinha o django e outros pacotes necessários instalados.

Solução: crie um conda ou ambiente virtual com django instalado e ative-o antes de usar o comando: $ python manage.py migrate

Sanjay Thapa
fonte
1

O django-admin pode ser o arquivo errado. Encontrei o mesmo problema que não encontrei em um computador diferente o mesmo fluxo de configuração.

Depois de comparar dois projetos, encontrei várias diferenças em manage.py e settings.py, então percebi que criei o projeto 2.0 django, mas o executei com python2.

correr which django-adminno iterm

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

Parece que tenho um django-admin em python3, mas não sei por quê. Então, tentei obter o django-amin correto.

pip show django

então eu tenho

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

Em /Library/Python/2.7/site-packages, encontrei o django-admin

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

Então, criei o projeto novamente por

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

então corra

cd myproject
python manage.py runserver

teve sucesso🎉

chie
fonte
1

Temos que criar um ambiente virtual dentro do projeto, não fora do projeto .. Então vai resolver ..

Shikha Mangal
fonte
1

Parece que você tem mais de uma versão do Python em seu computador. Experimente e remova um e deixe a única versão que você usou para desenvolver seu aplicativo.

Se necessário, você pode atualizar sua versão, mas certifique-se de ter apenas uma versão do Python em seu computador.

Eu espero que isso ajude.

Ayodele Premium
fonte
1

Eu caí exatamente na mesma exceção porque esqueci de ativar o ambiente virtual.

Billal Begueradj
fonte
1

Os seguintes podem ser os possíveis motivos,

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

Para criar um ambiente virtual

$ virtualenv --python=python3 venv

Para ativar o ambiente virtual

$ source venv/bin/activate
imbuir
fonte
1

Eu também estava recebendo o mesmo erro. insira a descrição da imagem aqui

Então voltei para a pasta onde está a pasta de ambiente e esqueci de ativar um ambiente virtual, então só eu estava recebendo este erro. insira a descrição da imagem aqui

Vá para essa pasta e ative o ambiente virtual.

$ source env/bin/activate
Pooja Khatri
fonte
1

Além disso, o tutorial recomenda que um ambiente virtual seja usado (consulte a documentação do Django: https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release "). Você pode fazer isso com pipenv --three. Uma vez você instalou o django pipenv install djangoe ativou seu ambiente virtual com pipenv shell, python irá se referir a python3 ao executar python manage.py runserver.

Documentação do Pipenv: https://pipenv.kennethreitz.org/

David Weisiger
fonte
0

O que estou me perguntando é que, embora o django esteja instalado no contêiner, ele pode não estar na máquina host onde você está executando o comando. Então, como o comando será executado. Portanto, uma vez que nenhuma das soluções acima funcionou para mim.

Eu descobri o contêiner em execução e entrei no contêiner em execução usando, em docker exec -it <container> bash seguida, executei o comando dentro do contêiner do docker. Como temos o contêiner volumoso, as alterações feitas também serão refletidas localmente. Qualquer comando a ser executado pode ser executado dentro do contêiner em execução

Tara Prasad Gurung
fonte
0

Para futuros leitores, eu também tive o mesmo problema. Acontece que a instalação do Python diretamente do site, bem como outra versão do Anaconda, causou esse problema. Tive que desinstalar o Python2.7 e manter apenas o anaconda como única distribuição.

Kshitij G
fonte
0

Você já entrou no ambiente virtual do django? Execute python -m venv myvenvse você ainda não instalou.

tomilia
fonte
0

Apenas faça:

pipenv shell

então repita:

python manage.py runserver

e não exclua from exccomo sugerido acima.

Felicidades!

Stanislau Baranouski
fonte
0

Eu tive o mesmo problema e poderia resolvê-lo. Ele está relacionado à versão do Django que você instalou, alguns deles não são suportados pelo python 2.7. Se você instalou o Django com pip, significa que está instalando a versão mais recente do que provavelmente não é compatível com o python 2.7. Você pode obter mais informações sobre isso aqui . Eu sugeriria python 3 ou especificar a versão do Django durante a instalação (que é 1.11 para python 2.7).

Keivan
fonte
0

Resolvi esse problema para desinstalar a versão múltipla do Python. Verifique a documentação oficial do Django para compatibilidade com Python.

" Compatibilidade Python

Django 2.1 suporta Python 3.5, 3.6 e 3.7. Django 2.0 é a última versão compatível com Python 3.4. "

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

Se remover "from exc" da penúltima linha deste código, será gerado outro erro devido a várias versões do Python.

Muhammad Faizan Fareed
fonte
0

ativar env pelo seguinte comando

  source  pathetoYourEnv/bin/activate

então execute o comando

python manage.py runserver
Vinod Ranga
fonte
0

Você deve iniciar seu ambiente virtual ,

como fazer isso?

primeiro com terminal cd no diretório que contém manage.py

em seguida, digite $source <myvenv>/bin/activate substituir pelo nome do seu Ambiente Virtual, sem colchetes angulares.

Outro problema pode ser que seu diretório raiz e venv não correspondem. A estrutura deve ser mais ou menos assim:

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

Esse é o seu ambiente virtual e manage.py deve estar na mesma pasta. A solução para isso é reiniciar o projeto. Se você está enfrentando esse erro, você não deve ter codificado nada ainda, então reinicie.

rishabh jain
fonte
0

Resolvi meu problema também quando ativei meu ambiente virtual usando:

source bin/activate
Nabila Tajrin
fonte
0

Tive este problema (Mac) e segui as instruções da página abaixo para instalar e ativar o ambiente virtual

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

$ cd [top-level-django-project-dir]

$ python3 -m pip install --user virtualenv

$ python3 -m venv env

$ source env / bin / activate

Depois de instalar e ativar o ambiente virtual, verifiquei

$ qual python

Então eu instalei o django no ambiente virtual

$ pip install django

E então eu poderia executar meu aplicativo

$ python3 manage.py runserver

Quando cheguei à próxima parte do tutorial

$ python manage.py startapp polls

Encontrei outro erro:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

Eu removi

from exc

e então criou o diretório polls

cfranklin
fonte