Bagaimana cara mengatasi SyntaxError pada autogenerated manage.py?

111

Saya mengikuti tutorial Django https://docs.djangoproject.com/es/1.10/intro/tutorial01/

Saya telah membuat proyek tiruan "mysite" (proyek pertama saya) dan mencoba mengujinya tanpa mengubahnya.

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

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

Saya mendapatkan SyntaxError pada file yang dibuat oleh sistem itu sendiri. Dan saya tampaknya tidak dapat menemukan orang lain yang telah mengalami masalah yang sama.

Saya akan menambahkan beberapa data pengaturan saya jika mungkin berguna

$ 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

Adakah yang bisa membantu saya?

Pembaruan: menambahkan konten dari 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'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)
jujur
sumber
Harap posting konten dari seluruh file (atau setidaknya lebih dari itu) yang memiliki kesalahan sintaks.
Scovetta
11
File itu dimaksudkan untuk digunakan dengan Python 3 (perhatikan itu baris pertama!), Dan tidak akan berfungsi di 2.7.
jasonharper
Web tutorial mengatakan bahwa, ketika beberapa bagian kode tidak berfungsi dengan 2.7, mereka akan menambahkan modifikasi yang diperlukan dalam komentar. Ini tidak ada modifikasi yang terdaftar, jadi saya berasumsi itu akan berhasil ...
Frank

Jawaban:

107

Pastikan versi python mana yang Anda hubungkan dengan django (Pastikan untuk mengaktifkan env virtual jika Anda menggunakannya).

Ketika Anda menginstal django menggunakan just

pip install django 

maka kamu harus lari

python manage.py startapp <yourApp name>

lain jika Anda telah menggunakan:

pip3 install django

maka kamu harus lari

python3 manage.py startapp <yourapp name>

Lihat:
masukkan deskripsi gambar di sini

lobsang.dll
sumber
11
Memiliki masalah yang sama dengan python manage.py migratedan mengubahnya untuk python3 manage.py migratememperbaiki kesalahan.
landocalrissian
9
Saya lupa mengaktifkan env virtual saya.
Bobort
48

Anda bisa mencoba dengan python3 manage.py runserver. Ini bekerja untuk saya.

Fernando
sumber
27

Anda harus mengaktifkan lingkungan virtual Anda. Di terminal -> sumber env / bin / aktifkan sekarang akan ada ----> (env) di terminal Anda ditampilkan!

sekarang akan bekerja -> runserver.

Tidak perlu menghapus bagian exc!

Aditya Sinha
sumber
13

Saya mengalami hal yang sama tetapi ini diselesaikan dengan menjalankan dengan python 3.6 tertentu seperti di bawah ini:

python3.6 manage.py runserver
Martin Karari
sumber
12

Cukup aktifkan lingkungan virtual Anda.

Raja Esir
sumber
9

Yang terbaik adalah membuat lingkungan virtual dan menjalankan kode Django Anda di dalam lingkungan virtual ini, ini membantu dalam tidak mengubah lingkungan yang ada. Berikut adalah langkah-langkah dasar untuk memulai dengan lingkungan virtual dan Django.

  1. Buat Direktori baru dan cd ke dalamnya.

    mkdir test , cd test

  2. Instal dan Buat lingkungan Virtual.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Aktifkan Lingkungan Virtual: source venv/bin/activate

  4. Pasang Django: pip install django

  5. Mulai proyek baru: django-admin startproject myproject

  6. cd ke proyek Anda dan Jalankan Proyek:

    cd myproject , python manage.py runserver

  7. Anda dapat melihat proyek Anda di sini: http://127.0.0.1:8000/

Sbk3824
sumber
sudah selesai dilakukan dengan baik! dengan "tutorial" ini sudah jelas cara kerjanya. di django3dalam activateterletak di .\venv\Scriptfolder
michael-Mammut
8

Setelah menguji dengan instruksi yang tepat (menggunakan python2 atau python3 bukan hanya "python") saya telah menetapkan bahwa apa pun yang dikatakan tutorial, ini HANYA berfungsi dengan python3.

jujur
sumber
3

Untuk menjalankan Python versi 3, Anda perlu menggunakan python3bukan python.

Jadi, perintah terakhirnya adalah:

python3 manage.py runserver
Parth Patel
sumber
3

Solusinya sangat mudah. pengecualian dari manage.py adalah karena ketika menjalankan perintah dengan python, Django tidak dapat memprediksi versi python yang tepat, katakanlah Anda mungkin mempunyai 3.6, 3.5, 3.8 dan mungkin hanya satu dari versi ini modul pip digunakan untuk menginstal Django untuk menyelesaikan ini juga menggunakan:

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

atau menggunakan versi persis python (xx):

pythonx.x manage.py <command>

lain penggunaan lingkungan virtual bisa berguna karena ini menghubungkan modul pip django dengan mudah ke versi python

  • buat env dengan pyenv atau virtualenv
  • aktifkan (misalnya di virtualenv => virtualenv env)
  • jalankan menggunakan perintah python manage.py
optimus
sumber
2

Anda harus mengaktifkan lingkungan virtual tempat Anda menginstal django. Kemudian jalankan perintah ini - python manage.py runserver

Wasique Ansari
sumber
2

Saya memecahkan situasi yang sama.

VERSI TERPASANG

python 3.6, django 2.1

SITUASI

Saya menginstal Node.js di Windows 10. Setelah python manage.py runservermenyebabkan kesalahan.

KESALAHAN

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

ALASAN

Path python saya berubah menjadi python-2.7 dari python-3.6. (3.6 benar di PC saya.)

LARUTAN

Perbaiki jalur python.

Otsuki Takaya
sumber
2

Saya mengalami kesalahan yang persis sama, tetapi kemudian saya menemukan bahwa saya lupa mengaktifkan lingkungan conda yang telah menginstal django dan paket lain yang diperlukan.

Solusi: Buat conda atau lingkungan virtual dengan django terinstal, dan aktifkan sebelum Anda menggunakan perintah: $ python manage.py migrate

Sanjay Thapa
sumber
1

Django-admin mungkin file yang salah. Saya menemui masalah yang sama yang tidak saya temukan di komputer lain dengan alur pengaturan yang sama.

Setelah membandingkan dua proyek, saya menemukan beberapa perbedaan di manage.py dan settings.py, kemudian saya menyadari saya membuat proyek 2.0 django tetapi menjalankannya dengan python2.

berjalan which django-admindi iterm

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

Sepertinya saya mendapatkan django-admin di python3 yang saya tidak tahu kenapa. Jadi saya mencoba mendapatkan django-amin yang benar.

pip show django

lalu saya dapatkan

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

Di /Library/Python/2.7/site-packages, saya menemukan django-admin

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

Jadi saya membuat proyek lagi oleh

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

lalu lari

cd myproject
python manage.py runserver

berhasil🎉

chie
sumber
1

Kita harus membuat lingkungan virtual di dalam proyek, bukan di luar proyek .. Kemudian akan diselesaikan ..

Shikha Mangal
sumber
1

Sepertinya Anda memiliki lebih dari satu versi Python di komputer Anda. Coba dan hapus satu dan tinggalkan satu-satunya versi yang Anda gunakan untuk mengembangkan aplikasi Anda.

Jika perlu, Anda dapat meningkatkan versi Anda, tetapi pastikan Anda hanya memiliki satu versi Python di komputer Anda.

Saya harap ini membantu.

Ayodele Premium
sumber
1

Saya mendarat di pengecualian yang persis sama karena saya lupa mengaktifkan lingkungan virtual.

Billal Begueradj
sumber
1

Berikut ini kemungkinan alasannya,

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

Untuk membuat lingkungan virtual

$ virtualenv --python=python3 venv

Untuk mengaktifkan lingkungan virtual

$ source venv/bin/activate
orang bodoh
sumber
1

Saya juga mendapatkan kesalahan yang sama. masukkan deskripsi gambar di sini

Kemudian saya kembali ke folder tempat folder lingkungan berada di sana dan saya lupa mengaktifkan lingkungan Virtual jadi hanya saya yang mendapatkan kesalahan ini. masukkan deskripsi gambar di sini

Buka folder itu dan aktifkan lingkungan virtual.

$ source env/bin/activate
Pooja Khatri
sumber
1

Juga, tutorial merekomendasikan bahwa lingkungan virtual digunakan (lihat dokumentasi Django: https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release "). Anda dapat melakukan ini dengan pipenv --three. Once Anda telah menginstal django dengan pipenv install djangodan mengaktifkan lingkungan virtual Anda dengan pipenv shell, python akan merujuk ke python3 saat menjalankan python manage.py runserver.

Dokumentasi Pipenv: https://pipenv.kennethreitz.org/

David Weisiger
sumber
0

Apa yang saya ingin tahu adalah meskipun django telah diinstal ke penampung itu mungkin tidak ada di mesin host tempat anda menjalankan perintah. Lalu bagaimana perintah tersebut akan dijalankan. Jadi karena tidak ada solusi di atas yang berhasil untuk saya.

Saya menemukan wadah yang sedang berjalan dan masuk ke dalam wadah yang sedang berjalan menggunakan docker exec -it <container> bash kemudian menjalankan perintah di dalam wadah buruh pelabuhan. Karena kami memiliki penampung volume, perubahan yang dilakukan juga akan tercermin secara lokal. Perintah apa pun yang harus dijalankan dapat dijalankan di dalam container yang sedang berjalan

Tara Prasad Gurung
sumber
0

Untuk pembaca selanjutnya, saya juga memiliki masalah yang sama. Ternyata menginstal Python langsung dari situs web serta memiliki versi lain dari Anaconda menyebabkan masalah ini. Saya harus menghapus Python2.7 dan hanya menyimpan anaconda sebagai satu-satunya distribusi.

Kshitij G
sumber
0

Sudahkah Anda memasuki lingkungan virtual untuk django? Jalankan python -m venv myvenvjika Anda belum menginstal.

tomilia.dll
sumber
0

Kerjakan saja:

pipenv shell

lalu ulangi:

python manage.py runserver

dan jangan hapus from excseperti yang disarankan di atas.

Bersulang!

Stanislau Baranouski
sumber
0

Saya memiliki masalah yang sama dan bisa menyelesaikannya. Ini terkait dengan versi Django yang telah Anda instal, beberapa di antaranya tidak didukung oleh python 2.7. Jika Anda telah memasang Django dengan pip, itu berarti Anda sedang memasang versi terbaru yang mungkin tidak didukung dalam python 2.7, Anda bisa mendapatkan informasi lebih lanjut tentangnya di sini . Saya akan menyarankan untuk python 3 atau menentukan versi Django selama pemasangan (yaitu 1.11 untuk python 2.7).

Keivan
sumber
0

Saya memecahkan masalah ini untuk menghapus beberapa versi Python. Periksa Dokumentasi Resmi Django untuk kompatibilitas Python.

" Kompatibilitas Python

Django 2.1 mendukung Python 3.5, 3.6, dan 3.7. Django 2.0 adalah versi terakhir yang mendukung Python 3.4. "

manage.py file

#!/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)

Jika menghapus "dari exc" dari baris kedua terakhir kode ini akan menghasilkan kesalahan lain karena beberapa versi Python.

Tarif Muhammad Faizan
sumber
0

aktifkan env dengan Perintah Mengikuti

  source  pathetoYourEnv/bin/activate

lalu jalankan perintah

python manage.py runserver
Vinod Ranga
sumber
0

Anda harus memulai Lingkungan Virtual Anda ,

Bagaimana cara melakukannya?

pertama dengan cd terminal ke direktori yang berisi manage.py

lalu ketik $source <myvenv>/bin/activate ganti dengan nama Lingkungan Virtual Anda, tanpa tanda kurung siku.

Masalah lainnya adalah direktori root dan venv Anda tidak cocok. Strukturnya harus seperti ini:

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

Itu adalah lingkungan virtual Anda dan manage.py harus berada di folder yang sama. Solusi untuk itu adalah memulai kembali proyek. Jika Anda menghadapi kesalahan ini, Anda pasti belum mengkodekan apa pun, jadi mulai ulang.

rishabh jain
sumber
0

Memecahkan masalah saya juga ketika saya mengaktifkan lingkungan virtual saya menggunakan:

source bin/activate
Nabila Tajrin
sumber
0

Saya mengalami masalah ini (Mac) dan mengikuti instruksi pada halaman di bawah ini untuk menginstal dan mengaktifkan lingkungan virtual

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

$ cd [tingkat atas-django-project-dir]

$ python3 -m pip install --user virtualenv

$ python3 -m venv env

$ source env / bin / aktifkan

Setelah saya menginstal dan mengaktifkan env virtual, saya memeriksanya

$ python yang mana

Kemudian saya menginstal django ke dalam virtual env

$ pip instal django

Dan kemudian saya bisa menjalankan aplikasi saya

$ python3 manage.py runserver

Ketika saya sampai di bagian selanjutnya dari tutorial

$ python manage.py startapp polls

Saya mengalami kesalahan lain:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

Saya dihapus

from exc

dan kemudian membuat direktori polls

cfranklin.dll
sumber