Làm cách nào để giải quyết SyntaxError trên Managed.py được tạo tự động?


109

Tôi đang làm theo hướng dẫn Django https://docs.djangoproject.com/es/1.10/intro/tutorial01/

Tôi đã tạo một dự án giả "mysite" (dự án đầu tiên của tôi) và cố gắng kiểm tra nó mà không thay đổi nó.

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

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

Tôi gặp lỗi SyntaxError trên tệp được tạo bởi chính hệ thống. Và tôi dường như không thể tìm thấy bất kỳ ai khác đã trải qua vấn đề tương tự.

Tôi sẽ thêm một số dữ liệu về thiết lập của mình trong trường hợp nó có thể được sử dụng

$ 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

Ai đó làm ơn giúp tôi được không?

Cập nhật: thêm nội dung của management.py được tạo tự động

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)

Vui lòng đăng nội dung của toàn bộ tệp (hoặc ít nhất là nhiều hơn) có lỗi cú pháp.
Scovetta

10
Tệp đó được thiết kế để sử dụng với Python 3 (lưu ý rằng đó là dòng đầu tiên!) Và sẽ không hoạt động trong 2.7.
jasonharper

Trang web hướng dẫn cho biết rằng, khi một số phần của mã không hoạt động với 2.7, họ sẽ thêm các sửa đổi cần thiết trong các nhận xét. Điều này không có sửa đổi nào được liệt kê, vì vậy tôi cho rằng nó sẽ hoạt động ...
Frank

Câu trả lời:


106

Đảm bảo rằng bạn kết nối django với phiên bản python nào (Đảm bảo kích hoạt env ảo nếu bạn đang sử dụng bất kỳ phiên bản nào).

Khi bạn cài đặt django chỉ bằng

pip install django 

sau đó bạn phải chạy

python manage.py startapp <yourApp name>

khác nếu bạn đã sử dụng:

pip3 install django

sau đó bạn phải chạy

python3 manage.py startapp <yourapp name>

Tham khảo:
nhập mô tả hình ảnh ở đây


11
Gặp sự cố tương tự python manage.py migratevà thay đổi nó để python3 manage.py migratesửa lỗi.
landocalrissian 19/1218

9
Tôi quên kích hoạt env ảo của mình.
Bobort

47

Bạn có thể thử với python3 manage.py runserver. Nó làm việc cho tôi.


27

bạn nên kích hoạt môi trường ảo của mình. Trong terminal -> source env / bin / active bây giờ sẽ có ----> (env) trong terminal của bạn hiển thị!

bây giờ nó sẽ hoạt động -> runningerver.

Không cần xóa phần exc!


13

Tôi cũng gặp phải vấn đề tương tự nhưng điều này đã được giải quyết bằng cách chạy với python 3.6 cụ thể như bên dưới:

python3.6 manage.py runserver



9

Tốt nhất là tạo một môi trường ảo và chạy mã Django của bạn bên trong môi trường ảo này, điều này giúp không thay đổi môi trường hiện có của bạn. Dưới đây là các bước cơ bản để bắt đầu với môi trường ảo và Django.

  1. Tạo một Thư mục mới và cd vào đó.

    mkdir test , cd test

  2. Cài đặt và tạo môi trường ảo.

    python3 -m pip install virtualenv virtualenv venv -p python3

  3. Kích hoạt môi trường ảo: source venv/bin/activate

  4. Cài đặt Django: pip install django

  5. Bắt đầu một dự án mới: django-admin startproject myproject

  6. cd vào dự án của bạn và Chạy dự án:

    cd myproject , python manage.py runserver

  7. Bạn có thể xem dự án của mình tại đây: http://127.0.0.1:8000/


làm tốt! bởi "hướng dẫn" này, nó đã rõ ràng về cách nó hoạt động. trong django3các activatenằm ở .\venv\Scriptthư mục
michael-Mammut

8

Sau khi thử nghiệm với các hướng dẫn chính xác (sử dụng python2 hoặc python3 thay vì chỉ "python"), tôi đã hiểu rằng bất kể hướng dẫn nói gì, điều này CHỈ hoạt động với python3.


3

Để chạy phiên bản Python 3, bạn cần sử dụng python3thay vìpython .

Vì vậy, lệnh cuối cùng sẽ là:

python3 manage.py runserver

3

Giải pháp là đơn giản. ngoại lệ từ management.py là do khi chạy lệnh với python, Django không thể dự đoán phiên bản python chính xác, giả sử bạn có thể có 3.6, 3.5, 3.8 và có thể chỉ một trong các phiên bản này, mô-đun pip được sử dụng để cài đặt Django để giải quyết cái này sử dụng:

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

hoặc sử dụng phiên bản python chính xác (xx) là viết tắt:

pythonx.x manage.py <command>

nếu không, việc sử dụng môi trường ảo có thể hữu ích vì nó liên quan dễ dàng đến bất kỳ mô-đun pip django nào với phiên bản python

  • tạo env bằng pyenv hoặc virtualenv
  • kích hoạt (ví dụ: trong virtualenv => virtualenv env)
  • chạy bằng lệnh python management.py

2

Bạn phải kích hoạt môi trường ảo nơi bạn đã cài đặt django. Sau đó chạy lệnh này - python management.py runningerver


2

Tôi đã giải quyết tình huống tương tự.

PHIÊN BẢN CÀI ĐẶT

python 3.6, django 2.1

TÌNH HÌNH

Tôi đã cài đặt Node.js trong Windows 10. Sau khi python manage.py runservergây ra lỗi.

LỖI

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

LÝ DO

Đường dẫn python của tôi đã thay đổi thành python-2.7 từ python-3.6. (3.6 là chính xác trong PC của tôi.)

GIẢI PHÁP

Sửa đường dẫn python.


2

Tôi đã gặp phải lỗi tương tự, nhưng sau đó tôi phát hiện ra rằng tôi quên kích hoạt môi trường conda đã cài đặt django và các gói bắt buộc khác.

Giải pháp: Tạo một chung cư hoặc môi trường ảo có cài đặt django và kích hoạt nó trước khi bạn sử dụng lệnh: $ python manage.py migrate


1

Django-admin có thể là tệp sai. Tôi đã gặp vấn đề tương tự mà tôi không tìm thấy trên một máy tính khác cùng quy trình thiết lập.

Sau khi so sánh hai dự án, tôi đã tìm thấy một số khác biệt tại management.py và settings.py, sau đó tôi nhận ra rằng tôi đã tạo dự án django 2.0 nhưng chạy nó bằng python2.

chạy which django-admintrong iterm

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

Có vẻ như tôi có một django-admin trong python3 mà tôi không biết tại sao. Vì vậy, tôi đã cố gắng lấy đúng django-amin.

pip show django

sau đó tôi có

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

Trong /Library/Python/2.7/site-packages, tôi đã tìm thấy django-admin

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

Vì vậy, tôi đã tạo lại dự án bằng cách

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

sau đó chạy

cd myproject
python manage.py runserver

thành công


1

Chúng ta phải tạo ra một môi trường ảo bên trong dự án chứ không phải bên ngoài dự án .. Sau đó nó sẽ giải quyết ..


1

Có vẻ như bạn có nhiều phiên bản Python trên máy tính của mình. Hãy thử và xóa một phiên bản và để lại phiên bản duy nhất bạn đã sử dụng để phát triển ứng dụng của mình.

Nếu cần, bạn có thể nâng cấp phiên bản của mình, nhưng hãy đảm bảo rằng bạn chỉ có một phiên bản Python trên máy tính của mình.

Tôi hi vọng cái này giúp được.


1

Tôi đã hạ cánh trên cùng một ngoại lệ chính xác vì tôi quên kích hoạt môi trường ảo.


1

Sau đây có thể là những lý do có thể xảy ra,

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

Để tạo môi trường ảo

$ virtualenv --python=python3 venv

Để kích hoạt môi trường ảo

$ source venv/bin/activate

1

Tôi cũng nhận được lỗi tương tự. nhập mô tả hình ảnh ở đây

Sau đó, tôi quay trở lại thư mục có thư mục môi trường ở đó và tôi quên kích hoạt Môi trường ảo nên chỉ tôi gặp lỗi này. nhập mô tả hình ảnh ở đây

Chuyển đến thư mục đó và kích hoạt môi trường ảo.

$ source env/bin/activate

1

Ngoài ra, hướng dẫn này khuyến nghị sử dụng môi trường ảo (xem tài liệu Django: https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release "). Bạn có thể thực hiện việc này với pipenv --three. Một lần bạn đã cài đặt django pipenv install djangovà kích hoạt môi trường ảo của mình với pipenv shell, python sẽ tham chiếu đến python3 khi thực thipython manage.py runserver .

Tài liệu Pipenv: https://pipenv.kennethreitz.org/


0

Điều tôi băn khoăn là mặc dù django được cài đặt vào vùng chứa, nó có thể không nằm trong máy chủ nơi bạn đang chạy lệnh. Khi đó lệnh sẽ chạy như thế nào. Vì vậy, vì không có giải pháp nào ở trên làm việc cho tôi.

Tôi đã tìm ra vùng chứa đang chạy và vào vùng chứa đang chạy bằng cách sử dụng docker exec -it <container> bash sau đó chạy lệnh bên trong vùng chứa docker. Khi chúng ta có vùng chứa volumed, các thay đổi được thực hiện cũng sẽ phản ánh cục bộ. Lệnh gì sẽ được chạy có thể được chạy bên trong vùng chứa đang chạy


0

Đối với những độc giả trong tương lai, tôi cũng gặp phải vấn đề tương tự. Hóa ra việc cài đặt Python trực tiếp từ trang web cũng như có một phiên bản khác từ Anaconda đã gây ra sự cố này. Tôi đã phải gỡ cài đặt Python2.7 và chỉ giữ anaconda làm bản phân phối duy nhất.


0

Bạn đã vào môi trường ảo cho django chưa? Chạy python -m venv myvenvnếu bạn chưa cài đặt.


0

Cứ làm đi:

pipenv shell

sau đó lặp lại:

python manage.py runserver

và không xóa from excnhư đã đề xuất ở trên.

chúc mừng!


0

Tôi đã có cùng một vấn đề và có thể giải quyết nó. Nó liên quan đến phiên bản Django mà bạn đã cài đặt, một số trong số chúng không được python 2.7 hỗ trợ. Nếu bạn đã cài đặt Django bằng pip, điều đó có nghĩa là bạn đang cài đặt phiên bản mới nhất có thể không được hỗ trợ trong python 2.7, Bạn có thể lấy thêm thông tin về nó tại đây . Tôi sẽ đề xuất với python 3 hoặc chỉ định phiên bản của Django trong khi cài đặt (là 1.11 cho python 2.7).


0

Tôi đã giải quyết vấn đề này để gỡ cài đặt nhiều phiên bản Python. Kiểm tra Tài liệu chính thức của Django để biết khả năng tương thích với Python.

" Khả năng tương thích của Python

Django 2.1 hỗ trợ Python 3.5, 3.6 và 3.7. Django 2.0 là phiên bản cuối cùng hỗ trợ Python 3.4. "

tập tin management.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)

Nếu xóa "from exc" khỏi dòng cuối cùng thứ hai của mã này sẽ tạo ra một lỗi khác do nhiều phiên bản Python.


0

kích hoạt env bằng Lệnh sau

  source  pathetoYourEnv/bin/activate

sau đó chạy lệnh

python manage.py runserver

0

Bạn nên bắt đầu Môi trường ảo của mình ,

làm thế nào để làm nó?

đầu tiên với terminal cd vào thư mục chứa management.py

sau đó gõ $source <myvenv>/bin/activate Replace với bạn tên Môi trường ảo, không có dấu ngoặc nhọn.

Một vấn đề khác có thể là thư mục gốc và venv của bạn không khớp. Cấu trúc phải như thế này:

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

Đó là môi trường ảo của bạn và management.py phải nằm trong cùng một thư mục. Giải pháp cho điều đó là khởi động lại dự án. Nếu bạn đang gặp phải lỗi này, chắc hẳn bạn vẫn chưa mã hóa bất kỳ thứ gì, vì vậy hãy khởi động lại.


0

Tôi cũng đã giải quyết được vấn đề khi kích hoạt môi trường ảo của mình bằng:

source bin/activate

0

Tôi gặp sự cố này (Mac) và đã làm theo hướng dẫn trên trang bên dưới để cài đặt và kích hoạt môi trường ảo

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

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

$ python3 -m pip cài đặt --user virtualenv

$ python3 -m venv env

$ source env / bin / active

Khi tôi đã cài đặt và kích hoạt env ảo, tôi đã kiểm tra nó

$ con trăn nào

Sau đó, tôi cài đặt django vào env ảo

$ pip cài đặt django

Và sau đó tôi có thể chạy ứng dụng của mình

$ python3 management.py runningerver

Khi tôi đến phần tiếp theo của hướng dẫn

$ python management.py cuộc thăm dò trên startapp

Tôi gặp một lỗi khác:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

Tôi đã gỡ bỏ

from exc

và sau đó nó tạo thư mục thăm dò ý kiến

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.