Come risolvere SyntaxError su manage.py autogenerato?


111

Sto seguendo il tutorial di Django https://docs.djangoproject.com/es/1.10/intro/tutorial01/

Ho creato un progetto fittizio "mysite" (il mio primissimo) e provo a testarlo senza alterarlo.

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

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

Ricevo un'eccezione SyntaxError su un file che è stato generato dal sistema stesso. E non riesco a trovare nessun altro che abbia affrontato lo stesso problema.

Aggiungerò alcuni dati della mia configurazione nel caso in cui possa essere utile

$ 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

Qualcuno può aiutarmi per favore?

Aggiornamento: aggiunta di contenuti di manage.py autogenerato

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)

Pubblica il contenuto dell'intero file (o almeno di una parte maggiore) che presenta l'errore di sintassi.
Scovetta

11
Quel file è destinato all'uso con Python 3 (notate che è la prima riga!) E non funzionerà in 2.7.
jasonharper

Il tutorial web dice che, quando una parte del codice non funziona con 2.7, aggiungeranno le modifiche necessarie nei commenti. Questo non aveva modifiche elencate, quindi ho pensato che avrebbe funzionato ...
Frank

Risposte:


107

Assicurati di quale versione di python connetti django (assicurati di attivare l'env virtuale se ne stai usando uno).

Quando installi django usando solo

pip install django 

allora devi correre

python manage.py startapp <yourApp name>

altrimenti se hai usato:

pip3 install django

allora devi correre

python3 manage.py startapp <yourapp name>

Fare riferimento:
inserisci qui la descrizione dell'immagine


11
Ha avuto lo stesso problema con python manage.py migratee modificandolo per python3 manage.py migratecorreggere l'errore.
landocalrissian

9
Ho dimenticato di attivare il mio ambiente virtuale.
Bobort

48

Puoi provare con python3 manage.py runserver. Per me funziona.


27

dovresti attivare il tuo ambiente virtuale. In terminal -> source env / bin / activation ora ci sarà ----> (env) nel tuo terminale visualizzato!

ora funzionerà -> runserver.

Non è necessario eliminare la parte ecc.


13

Stavo sperimentando lo stesso ma questo è stato risolto eseguendo con Python 3.6 specifico come di seguito:

python3.6 manage.py runserver



9

È meglio creare un ambiente virtuale ed eseguire il codice Django all'interno di questo ambiente virtuale, questo aiuta a non modificare gli ambienti esistenti. Ecco i passaggi di base per iniziare con l'ambiente virtuale e Django.

  1. Crea una nuova directory e cd in essa.

    mkdir test , cd test

  2. Installa e crea un ambiente virtuale.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Attiva l'ambiente virtuale: source venv/bin/activate

  4. Installa Django: pip install django

  5. Inizia un nuovo progetto: django-admin startproject myproject

  6. cd al tuo progetto ed esegui progetto:

    cd myproject , python manage.py runserver

  7. Puoi vedere il tuo progetto qui: http://127.0.0.1:8000/


molto bene! da questo "tutorial" è stato chiaro come funziona. in django3la activatesi trova nella .\venv\Scriptcartella
michael-Mammut

8

Dopo aver testato con istruzioni precise (usando python2 o python3 invece di solo "python") ho constatato che non importa cosa dice il tutorial, questo funziona SOLO con python3.


3

Per eseguire Python versione 3, è necessario utilizzare al python3posto di python.

Quindi, il comando finale sarà:

python3 manage.py runserver

3

La soluzione è semplice. l'eccezione da manage.py è perché quando si esegue il comando con python, Django non è in grado di prevedere la versione esatta di python, diciamo che potresti avere 3.6, 3.5, 3.8 e forse solo una di queste versioni il modulo pip è stato utilizzato per installare Django per risolvere questo usa:

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

o usando la versione esatta di python (xx):

pythonx.x manage.py <command>

altrimenti l'uso di ambienti virtuali può tornare utile perché collega facilmente qualsiasi modulo pip django alla versione python

  • crea env con pyenv o virtualenv
  • attivare (ad esempio in virtualenv => virtualenv env)
  • eseguire utilizzando il comando python manage.py

2

Devi attivare l'ambiente virtuale in cui hai installato django. Quindi esegui questo comando: python manage.py runserver


2

Ho risolto la stessa situazione.

VERSIONE INSTALLATA

python 3.6, django 2.1

SITUAZIONE

Ho installato Node.js in Windows 10. Dopo aver python manage.py runservercausato l'errore.

ERRORE

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

MOTIVO

Il mio percorso python è cambiato in python-2.7 da python-3.6. (3.6 è corretto nel mio PC.)

SOLUZIONE

Risolto il problema con il percorso di Python.


2

Ho avuto lo stesso identico errore, ma poi ho scoperto di aver dimenticato di attivare l'ambiente conda su cui erano installati django e altri pacchetti richiesti.

Soluzione: crea un ambiente conda o virtuale con django installato e attivalo prima di utilizzare il comando: $ python manage.py migrate


1

Il django-admin forse il file sbagliato. Ho incontrato lo stesso problema che non ho riscontrato su un computer diverso lo stesso flusso di set-up.

Dopo aver confrontato due progetti, ho trovato diverse differenze in manage.py e settings.py, poi mi sono reso conto di aver creato il progetto django 2.0 ma di eseguirlo con python2.

eseguire which django-adminin iterm

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

Sembra che avessi un django-admin in python3 di cui non sapevo il motivo, quindi ho provato a ottenere il django-amin corretto.

pip show django

poi ho ottenuto

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

In /Library/Python/2.7/site-packages, ho trovato il django-admin

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

Quindi ho creato di nuovo il progetto di

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

quindi corri

cd myproject
python manage.py runserver

succeeded🎉


1

Dobbiamo creare un ambiente virtuale all'interno del progetto, non all'esterno del progetto .. Quindi risolverà ..


1

Sembra che tu abbia più di una versione di Python sul tuo computer. Prova a rimuoverne uno e lascia l'unica versione che hai usato per sviluppare la tua applicazione.

Se necessario, puoi aggiornare la tua versione, ma assicurati di avere solo una versione di Python sul tuo computer.

Spero che aiuti.


1

Sono atterrato sulla stessa identica eccezione perché ho dimenticato di attivare l'ambiente virtuale.


1

Le seguenti potrebbero essere le possibili ragioni,

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

Per creare un ambiente virtuale

$ virtualenv --python=python3 venv

Per attivare l'ambiente virtuale

$ source venv/bin/activate

1

Ho anche ricevuto lo stesso errore. inserisci qui la descrizione dell'immagine

Quindi sono tornato alla cartella in cui si trova la cartella dell'ambiente e ho dimenticato di attivare un ambiente virtuale, quindi solo io stavo ottenendo questo errore. inserisci qui la descrizione dell'immagine

Vai a quella cartella e attiva l'ambiente virtuale.

$ source env/bin/activate


0

Quello che mi chiedo è che, sebbene django sia installato nel contenitore, potrebbe non essere nella macchina host su cui stai eseguendo il comando. Allora come verrà eseguito il comando. Quindi, poiché nessuna delle soluzioni di cui sopra ha funzionato per me.

Ho scoperto il container in esecuzione e sono entrato nel container in esecuzione usando, docker exec -it <container> bash quindi ho eseguito il comando all'interno del container docker. Poiché abbiamo il contenitore voluminoso, le modifiche apportate si rifletteranno anche a livello locale. Qualunque comando debba essere eseguito può essere eseguito all'interno del contenitore in esecuzione


0

Per i futuri lettori, anch'io ho avuto lo stesso problema. Risulta che l'installazione di Python direttamente dal sito Web e un'altra versione di Anaconda hanno causato questo problema. Ho dovuto disinstallare Python2.7 e mantenere anaconda solo come unica distribuzione.


0

Sei entrato nell'ambiente virtuale per django? Esegui python -m venv myvenvse non l'hai ancora installato.


0

Basta fare:

pipenv shell

quindi ripetere:

python manage.py runserver

e non eliminare from exccome suggerito sopra.

Saluti!


0

Ho avuto lo stesso problema e ho potuto risolverlo. È correlato alla versione di Django che hai installato, alcuni di essi non sono supportati da python 2.7. Se hai installato Django con pip, significa che stai installando l'ultima versione di quella che probabilmente non è supportata in python 2.7, puoi ottenere maggiori informazioni qui . Suggerirei di python 3 o di specificare la versione di Django durante l'installazione (che è 1.11 per python 2.7).


0

Ho risolto questo problema per disinstallare la versione multipla di Python. Controlla la documentazione ufficiale di Django per la compatibilità con Python.

" Compatibilità con Python

Django 2.1 supporta Python 3.5, 3.6 e 3.7. Django 2.0 è l'ultima versione a supportare Python 3.4. "

file 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 la rimozione di "from exc" dalla penultima riga di questo codice genererà un altro errore dovuto a più versioni di Python.


0

attivare env con il comando seguente

  source  pathetoYourEnv/bin/activate

quindi eseguire il comando

python manage.py runserver

0

Dovresti avviare il tuo ambiente virtuale ,

come farlo?

prima con il cd del terminale nella directory contenente manage.py

quindi digita $source <myvenv>/bin/activate sostituisci con il nome dell'ambiente virtuale, senza parentesi angolari.

Un altro problema può essere che la tua directory principale e venv non corrispondono. La struttura dovrebbe essere qualcosa del genere:

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

Questo è il tuo ambiente virtuale e manage.py dovrebbe essere nella stessa cartella. La soluzione è riavviare il progetto. Se stai riscontrando questo errore non devi ancora aver codificato nulla, quindi riavvia.


0

Ho risolto anche il mio problema quando ho attivato il mio ambiente virtuale utilizzando:

source bin/activate

0

Ho riscontrato questo problema (Mac) e ho seguito le istruzioni nella pagina seguente per installare e attivare l'ambiente virtuale

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

$ cd [dir-progetto-django di primo livello]

$ python3 -m pip install --user virtualenv

$ python3 -m venv env

$ source env / bin / activation

Una volta installato e attivato l'ambiente virtuale l'ho controllato

$ quale pitone

Quindi ho installato django nell'ambiente virtuale

$ pip install django

E poi potrei eseguire la mia app

$ python3 manage.py runserver

Quando sono arrivato alla parte successiva del tutorial

$ python manage.py startapp sondaggi

Ho riscontrato un altro errore:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

Ho rimosso

from exc

e quindi ha creato la directory dei sondaggi

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.