วิธีแก้ 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

11
ไฟล์นั้นมีไว้สำหรับใช้กับ Python 3 (สังเกตว่าเป็นบรรทัดแรก!) และจะไม่ทำงานใน 2.7
jasonharper

เว็บการสอนระบุว่าเมื่อบางส่วนของโค้ดใช้ไม่ได้กับ 2.7 พวกเขาจะเพิ่มการแก้ไขที่จำเป็นในความคิดเห็น สิ่งนี้ไม่มีการแก้ไขในรายการดังนั้นฉันคิดว่ามันน่าจะใช้ได้ ...
แฟรงค์

คำตอบ:


109

ตรวจสอบให้แน่ใจว่า python เวอร์ชันใดที่คุณเชื่อมต่อ django ด้วย(ตรวจสอบให้แน่ใจว่าได้เปิดใช้งาน virtual 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 / เปิดใช้งานตอนนี้จะมี ----> (env) ในเทอร์มินัลของคุณปรากฏขึ้น!

ตอนนี้มันจะทำงาน -> รันเนอร์เวอร์

ไม่จำเป็นต้องลบส่วน exc!



13

ฉันประสบเหมือนกัน แต่สิ่งนี้ได้รับการแก้ไขโดยการเรียกใช้ python 3.6 เฉพาะดังต่อไปนี้:

python3.6 manage.py runserver


9

เป็นการดีที่สุดในการสร้างสภาพแวดล้อมเสมือนและรันโค้ด Django ของคุณภายในสภาพแวดล้อมเสมือนนี้ซึ่งจะช่วยในการไม่เปลี่ยนสภาพแวดล้อมที่มีอยู่ของคุณ ขั้นตอนพื้นฐานในการเริ่มต้นด้วยสภาพแวดล้อมเสมือนจริงและ Django มีดังนี้

  1. สร้าง Directory ใหม่และ cd ลงไป

    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 จากนั้นเรียกใช้คำสั่งนี้ - python Manage.py runerver


2

ฉันแก้ไขสถานการณ์เดียวกัน

รุ่นที่ติดตั้ง

หลาม 3.6, django 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 จากนั้นฉันก็รู้ว่าฉันสร้างโปรเจ็กต์ 2.0 django แต่รันด้วย python2

ทำงานwhich django-adminใน iterm

/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

ดูเหมือนว่าคุณมี Python มากกว่าหนึ่งเวอร์ชันในคอมพิวเตอร์ของคุณ ลองลบออกและปล่อยให้เป็นเวอร์ชันเดียวที่คุณใช้พัฒนาแอปพลิเคชันของคุณ

หากจำเป็นคุณสามารถอัปเกรดเวอร์ชันของคุณได้ แต่ต้องแน่ใจว่าคุณมี Python เพียงเวอร์ชันเดียวในคอมพิวเตอร์ของคุณ

ฉันหวังว่านี่จะช่วยได้.


1

ฉันลงจอดในข้อยกเว้นเดียวกันเพราะฉันลืมเปิดใช้งานสภาพแวดล้อมเสมือนจริง


1

ฉันก็ได้รับข้อผิดพลาดเดียวกัน ป้อนคำอธิบายภาพที่นี่

จากนั้นฉันก็กลับไปที่โฟลเดอร์ที่มีโฟลเดอร์สภาพแวดล้อมอยู่ที่นั่นและฉันลืมเปิดใช้งานสภาพแวดล้อมเสมือนดังนั้นฉันจึงได้รับข้อผิดพลาดนี้เท่านั้น ป้อนคำอธิบายภาพที่นี่

ไปที่โฟลเดอร์นั้นและเปิดใช้งานสภาพแวดล้อมเสมือนจริง

$ source env/bin/activate

1

นอกจากนี้บทแนะนำยังแนะนำให้ใช้สภาพแวดล้อมเสมือนจริง (ดูเอกสาร Django: https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release ") คุณสามารถทำได้ด้วยpipenv --threeครั้งเดียว คุณได้ติดตั้ง Django ด้วยpipenv install djangoและเปิดใช้งานสภาพแวดล้อมเสมือนจริงของคุณด้วยpipenv shellหลามจะอ้างถึง python3 python manage.py runserverเมื่อมีการดำเนิน

เอกสาร Pipenv: https://pipenv.kennethreitz.org/


0

สิ่งที่ฉันสงสัยคือแม้ว่า django จะถูกติดตั้งลงในคอนเทนเนอร์ แต่อาจไม่ได้อยู่ในเครื่องโฮสต์ที่คุณใช้คำสั่ง แล้วคำสั่งจะทำงานอย่างไร ดังนั้นเนื่องจากไม่มีวิธีแก้ปัญหาข้างต้นสำหรับฉัน

ฉันพบคอนเทนเนอร์ที่กำลังทำงานอยู่และเข้าไปในคอนเทนเนอร์ที่กำลังทำงานโดยใช้docker exec -it <container> bash แล้วรันคำสั่งภายในคอนเทนเนอร์นักเทียบท่า ในขณะที่เรามีคอนเทนเนอร์ที่มีปริมาตรการเปลี่ยนแปลงที่ทำจะสะท้อนให้เห็นในพื้นที่ด้วย สิ่งที่เคยสั่งคือการรันสามารถรันภายในคอนเทนเนอร์ที่กำลังรันอยู่


0

สำหรับผู้อ่านในอนาคตฉันก็มีปัญหาเดียวกันเช่นกัน ปรากฎว่าการติดตั้ง Python โดยตรงจากเว็บไซต์และการมีเวอร์ชันอื่นจาก Anaconda ทำให้เกิดปัญหานี้ ฉันต้องถอนการติดตั้ง Python2.7 และเก็บเฉพาะ anaconda ไว้เป็นการแจกจ่ายเพียงอย่างเดียว


0

คุณได้เข้าสู่สภาพแวดล้อมเสมือนจริงสำหรับ django หรือไม่? เรียกใช้python -m venv myvenvหากคุณยังไม่ได้ติดตั้ง



0

ฉันมีปัญหาเดียวกันและสามารถแก้ไขได้ เกี่ยวข้องกับเวอร์ชันของ Django ที่คุณติดตั้งไว้บางส่วนไม่รองรับ python 2.7 หากคุณติดตั้ง Django กับ pip ก็หมายความว่าคุณกำลังติดตั้งรุ่นล่าสุดของสิ่งที่อาจจะไม่ได้รับการสนับสนุนในหลาม 2.7 คุณสามารถได้รับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ที่นี่ ฉันขอแนะนำให้ใช้ python 3 หรือระบุเวอร์ชันของ Django ระหว่างการติดตั้ง (ซึ่งก็คือ 1.11 สำหรับ python 2.7)


0

ฉันแก้ปัญหานี้เพื่อถอนการติดตั้ง Python หลายเวอร์ชัน ตรวจสอบเอกสารอย่างเป็นทางการของ Djangoสำหรับความเข้ากันได้ของ Python

" ความเข้ากันได้ของ 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)

หากการลบ "จาก exc" ออกจากบรรทัดสุดท้ายที่สองของโค้ดนี้จะทำให้เกิดข้อผิดพลาดขึ้นอีกเนื่องจาก Python หลายเวอร์ชัน



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-environment/

$ cd [ระดับบนสุด -django-project-dir]

$ python3 -m pip ติดตั้ง - ผู้ใช้ Virtualenv

$ python3 -m venv env

$ source env / bin / เปิดใช้งาน

เมื่อฉันติดตั้งและเปิดใช้งาน virtual env แล้วฉันได้ตรวจสอบ

$ ซึ่ง python

จากนั้นฉันติดตั้ง django ลงใน virtual env

$ pip ติดตั้ง django

จากนั้นฉันก็สามารถเรียกใช้แอปของฉันได้

$ python3 Manage.py รันเนอร์เวอร์

เมื่อฉันไปถึงส่วนถัดไปของบทช่วยสอน

$ python Manage.py แบบสำรวจ startapp

ฉันพบข้อผิดพลาดอื่น:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

ฉันลบออกแล้ว

from exc

จากนั้นจึงสร้างไดเร็กทอรีโพล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.