Autogenerated manage.py üzerinde SyntaxError nasıl çözülür?


111

Django öğreticisini takip ediyorum https://docs.djangoproject.com/es/1.10/intro/tutorial01/

Bir "mysite" kukla projesi yarattım (ilk projem) ve onu değiştirmeden test etmeye çalıştım.

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

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

Sistemin kendisi tarafından oluşturulan bir dosyada SyntaxError hatası alıyorum. Görünüşe göre aynı sorunu yaşayan başka birini bulamıyorum.

Kullanılabilir olması ihtimaline karşı kurulumumun bazı verilerini ekleyeceğim

$ 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

Biri bana yardım edebilir mi lütfen?

Güncelleme: otomatik olarak oluşturulan manage.py içeriğini ekleme

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)

Lütfen sözdizimi hatası olan tüm dosyanın (veya en azından daha fazlasının) içeriğini gönderin.
Scovetta

11
Bu dosya Python 3 ile kullanılmak üzere tasarlanmıştır (ilk satırına dikkat edin!) Ve 2.7'de çalışmayacaktır.
jasonharper

Öğretici web, kodun bir kısmının 2.7 ile çalışmayacağı zaman, yorumlara gerekli değişiklikleri ekleyeceğini söylüyor. Listede hiçbir değişiklik yoktu, bu yüzden işe yarayacağını varsaydım ...
Frank

Yanıtlar:


109

Django'yu hangi python sürümüyle bağladığınızdan emin olun (Herhangi birini kullanıyorsanız sanal ortamı etkinleştirdiğinizden emin olun).

Django'yu sadece kullanarak kurduğunuzda

pip install django 

o zaman koşmalısın

python manage.py startapp <yourApp name>

eğer kullandıysanız:

pip3 install django

o zaman koşmalısın

python3 manage.py startapp <yourapp name>

Bakın:
görüntü açıklamasını buraya girin


11
Hatayı düzeltmek için aynı sorunu yaşadım python manage.py migrateve değiştirdi python3 manage.py migrate.
landocalrissian

9
Sanal ortamımı etkinleştirmeyi unuttum.
Bobort

49

İle deneyebilirsiniz python3 manage.py runserver. Benim için çalışıyor.


28

sanal ortamınızı etkinleştirmelisiniz. Terminal -> kaynak env / bin / activ'de, şimdi terminalinizde ----> (env) görüntülenecek!

şimdi çalışacak -> runserver.

Özel kısmı silmenize gerek yok!



13

Ben de aynı şeyi yaşıyordum ama bu, aşağıdaki gibi belirli bir python 3.6 ile çalıştırılarak çözüldü:

python3.6 manage.py runserver


9

Bir sanal ortam oluşturmak ve Django kodunuzu bu sanal ortamda çalıştırmak en iyisidir, bu, mevcut ortamlarınızı değiştirmemenize yardımcı olur. Sanal ortam ve Django ile başlamak için temel adımlar.

  1. Yeni bir Dizin oluşturun ve içine cd yapın.

    mkdir test , cd test

  2. Bir Sanal ortam Kurun ve Oluşturun.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Sanal Ortamı Etkinleştirin: source venv/bin/activate

  4. Django'yu yükleyin: pip install django

  5. Yeni bir proje başlatın: django-admin startproject myproject

  6. cd projenize ve Run Project:

    cd myproject , python manage.py runserver

  7. Projenizi burada görebilirsiniz: http://127.0.0.1:8000/


aferin! bu "öğretici" ile nasıl çalıştığı açıktı. içinde bulunan klasördedjango3activate.\venv\Script
michael-mammut

8

Kesin talimatlarla test ettikten sonra (sadece "python" yerine python2 veya python3 kullanarak) Öğretici ne derse desin, bunun YALNIZCA python3 ile çalıştığını belirttim.


4

Çözüm basittir. manage.py'nin istisnası, komutu python ile çalıştırırken, Django'nun tam python sürümünü tahmin edememesi, örneğin 3.6, 3.5, 3.8'e sahip olabileceğinizi ve belki de bu sürümlerden sadece birinin Django'yu kurmak için kullanıldığını varsayalım. bu ya şunu kullanır:

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

veya tam python sürümü (xx) standlarını kullanarak:

pythonx.x manage.py <command>

aksi takdirde sanal ortamların kullanımı kullanışlı olabilir çünkü herhangi bir pip django modülünü python sürümüyle kolayca ilişkilendirir

  • pyenv veya virtualenv ile env oluştur
  • etkinleştir (ör. virtualenv => virtualenv ortam içinde)
  • python manage.py komutunu kullanarak çalıştırın

3

Python sürüm 3'ü çalıştırmak için python3bunun yerine kullanmanız gerekirpython .

Yani, son komut şu olacaktır:

python3 manage.py runserver

2

Django'yu kurduğunuz sanal ortamı etkinleştirmelisiniz. Ardından bu komutu çalıştırın - python manage.py runserver


2

Ben de aynı durumu çözdüm.

KURULU SÜRÜM

python 3.6, django 2.1

DURUM

Windows 10'da Node.js'yi kurdum python manage.py runserver. Hataya neden olduktan sonra .

HATA

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

NEDEN

Python yolum python-3.6'dan python-2.7'ye değiştirildi. (Bilgisayarımda 3.6 doğru.)

ÇÖZÜM

Python yolunu düzeltin.


2

Aşağıdakiler olası nedenler olabilir,

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

Sanal ortam oluşturmak için

$ virtualenv --python=python3 venv

Sanal ortamı etkinleştirmek için

$ source venv/bin/activate

2. Çoğu zaman farklı bir python sürümü sorundur. Bu cevap için +1.
PSN

2

Aynı hatayı aldım, ancak daha sonra django ve diğer gerekli paketlerin kurulu olduğu conda ortamını etkinleştirmeyi unuttuğumu öğrendim.

Çözüm: django yüklü bir conda veya sanal ortam oluşturun ve komutu kullanmadan önce etkinleştirin: $ python manage.py migrate


1

Django-admin belki yanlış dosya. Aynı kurulum akışında farklı bir bilgisayarda bulamadığım aynı problemle karşılaştım.

İki projeyi karşılaştırdıktan sonra, manage.py ve settings.py'de birkaç fark buldum, sonra 2.0 django projesi oluşturduğumu ama onu python2 ile çalıştırdığımı fark ettim.

çalıştırmak which django-adminiTerm içinde

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

Python3'te nedenini bilmediğim bir django-admin var gibi görünüyor. Bu yüzden doğru django-amin'i almaya çalıştım.

pip show django

sonra anladım

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

İçinde /Library/Python/2.7/site-packagesdjango-admin buldum

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

Bu yüzden tekrar proje oluşturdum

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

o zaman koş

cd myproject
python manage.py runserver

başarılı


1

Proje dışında değil proje içinde sanal bir ortam oluşturmalıyız .. O zaman çözecektir ..


1

Görünüşe göre bilgisayarınızda birden fazla Python sürümü var. Birini deneyin ve kaldırın ve uygulamanızı geliştirmek için kullandığınız tek sürümü bırakın.

Gerekirse, sürümünüzü yükseltebilirsiniz, ancak bilgisayarınızda yalnızca bir Python sürümünün olduğundan emin olun.

Umarım bu yardımcı olur.



1

Ben de aynı hatayı alıyordum. görüntü açıklamasını buraya girin

Sonra ortam klasörünün bulunduğu klasöre geri döndüm ve bir Sanal ortamı etkinleştirmeyi unuttum, bu yüzden sadece bu hatayı alıyordum. görüntü açıklamasını buraya girin

Bu klasöre gidin ve sanal ortamı etkinleştirin.

$ source env/bin/activate


0

Merak ettiğim şey, django konteynere yüklenmiş olsa da, komutu çalıştırdığınız ana makinede olmayabilir. O zaman komut nasıl çalışacak? Bu yüzden yukarıdaki çözümlerin hiçbiri benim için işe yaramadı.

Çalışan konteyneri buldum ve kullanarak çalışan konteynere girdim ve docker exec -it <container> bash ardından docker konteynerinin içindeki komutu çalıştırdım. Hacimli konteynere sahip olduğumuz için, yapılan değişiklikler yerel olarak da yansıtılacaktır. Çalıştırılacak komut ne olursa olsun, çalışan konteynerin içinde çalıştırılabilir


0

Gelecekteki okuyucular için de aynı sorunu yaşadım. Python'u doğrudan web sitesinden yüklemenin yanı sıra Anaconda'dan başka bir sürümün bu soruna neden olduğu ortaya çıktı. Python2.7'yi kaldırmam ve yalnızca anaconda'yı tek dağıtım olarak tutmam gerekiyordu.


0

Django için sanal ortama girdiniz mi? python -m venv myvenvHenüz yüklemediyseniz çalıştırın .


0

Sadece yap:

pipenv shell

sonra tekrarlayın:

python manage.py runserver

ve from excyukarıda önerildiği gibi silmeyin .

şerefe!


0

Aynı sorunu yaşadım ve çözebilirdim. Yüklediğiniz Django sürümüyle ilgilidir, bazıları python 2.7 tarafından desteklenmemektedir. Eğer pip ile Django yüklediyseniz, o zaman muhtemelen piton 2.7 desteklenmez o son sürümünü yüklemeden anlamına gelir, Bu konuda daha fazla bilgi alabilirsiniz burada . Kurulum sırasında python 3'ü öneririm veya Django'nun sürümünü belirtirim (python 2.7 için 1.11'dir).


0

Python'un birden çok sürümünü kaldırmak için bu sorunu çözdüm. Kontrol Django Resmi Belgeleri Python uyumluluk için.

" Python uyumluluğu

Django 2.1, Python 3.5, 3.6 ve 3.7'yi destekler. Django 2.0, Python 3.4'ü destekleyen son sürümdür. "

manage.py dosyası

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

Bu kodun ikinci son satırından "özelden" kaldırmak, Python'un birden çok sürümü nedeniyle başka bir hataya neden olur.


0

Aşağıdaki Komut ile env'i etkinleştirin

  source  pathetoYourEnv/bin/activate

sonra komutu çalıştır

python manage.py runserver

0

Sanal Ortamınızı başlatmalısınız ,

nasıl yapılır?

önce terminal cd'si ile manage.py içeren dizine

sonra yazın $source <myvenv>/bin/activate açısal parantezler olmadan Sanal Ortam adınızla değiştirin.

Başka bir sorun, kök dizininizin ve venv'inizin uyuşmaması olabilir. Yapı şunun gibi bir şey olmalı:

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

Bu sizin sanal ortamınızdır ve manage.py aynı klasörde olmalıdır. Bunun çözümü projeyi yeniden başlatmaktır. Bu hatayla karşılaşıyorsanız, henüz hiçbir şey kodlamamış olmalısınız, bu yüzden yeniden başlatın.


0

Aşağıdakileri kullanarak sanal ortamımı etkinleştirdiğimde sorunumu da çözdüm:

source bin/activate

0

Bu sorunu yaşadım (Mac) ve sanal ortamı yüklemek ve etkinleştirmek için aşağıdaki sayfadaki talimatları izledim

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

$ cd [üst düzey-django-proje-dizini]

$ python3 -m pip kurulumu --user virtualenv

$ python3 -m venv env

$ kaynak ortam / bin / etkinleştirme

Sanal ortamı kurup etkinleştirdikten sonra kontrol ettim

$ hangi piton

Sonra django'yu sanal ortama yükledim

$ pip django yükle

Ve sonra uygulamamı çalıştırabilirim

$ python3 manage.py runserver

Öğreticinin sonraki kısmına geldiğimde

$ python manage.py startapp anketleri

Başka bir hatayla karşılaştım:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

Kaldırdım

from exc

ve ardından anketler dizinini oluşturdu

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.