如何解决自动生成的 manage.py 上的语法错误?

How to solve SyntaxError on autogenerated manage.py?

提问人:Frank 提问时间:3/6/2017 最后编辑:Zoe is on strikeFrank 更新时间:10/4/2022 访问量:259794

问:

我正在按照 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)
python 语法错误

评论

0赞 Scovetta 3/6/2017
请发布具有语法错误的整个文件(或至少更多文件)的内容。
17赞 jasonharper 3/6/2017
该文件旨在与 Python 3 一起使用(请注意,它是第一行!),在 2.7 中不起作用。
0赞 Frank 3/6/2017
教程网站说,当代码的某些部分不适用于 2.7 时,他们会在注释中添加所需的修改。这没有列出任何修改,所以我认为它会起作用......
0赞 Jakub Ujvvary 10/30/2020
(Mac OS) 使用:python3 manage.py runserver
0赞 m.eslampnah 4/16/2021
我运行这个命令,它对我有用:.\venv\scripts\activate

答:

12赞 Frank 3/7/2017 #1

在使用精确的指令进行测试(使用 python2 或 python3 而不仅仅是“python”)之后,我表示无论教程怎么说,这仅适用于 python3。

2赞 d1onysus 12/4/2017 #2

此外,本教程建议使用虚拟环境(参见 Django 文档:https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release“)。您可以使用 来执行此操作。一旦你安装了 django 并使用 激活了你的虚拟环境,python 将在执行时引用 python3。pipenv --threepipenv install djangopipenv shellpython manage.py runserver

Pipenv 文档:https://pipenv.kennethreitz.org/

171赞 lobsang 12/16/2017 #3

确保你使用哪个 python 版本连接 django(如果你使用任何虚拟环境,请确保激活虚拟环境)。

当你安装 django 时,只使用

pip install django 

然后你必须运行

python manage.py startapp <yourApp name>

否则,如果您使用过:

pip3 install django

然后你必须运行

python3 manage.py startapp <yourapp name>

指:
enter image description here

评论

20赞 landocalrissian 12/19/2018
有同样的问题,并更改它以修复错误。python manage.py migratepython3 manage.py migrate
12赞 Bobort 1/1/2019
我忘了激活我的虚拟环境。
27赞 E_K 12/21/2017 #4

只需激活您的虚拟环境即可。

评论

0赞 saber tabatabaee yazdi 3/16/2021
我们怎样才能激活伴侣!
15赞 Vipin Mohan 12/27/2017 #5

这是一个简单的解决方案,实际上是我刚刚遇到的一个。您是否激活了虚拟环境?

我的终端截图

36赞 Aditya Sinha 12/29/2017 #6

您应该激活您的虚拟环境。 在终端中,.根据您的 shell,现在应该成为提示的一部分。source env/bin/activate(env)

现在应该可以工作了。无需删除 exc 部分!runserver

评论

1赞 flyingfishcattle 4/24/2021
对于 Django 3,脚本在文件夹中,因此命令应该是:activateScriptssource venv/Scripts/activate
76赞 Fernando 3/11/2018 #7

您可以尝试使用 . 它对我有用。python3 manage.py runserver

评论

0赞 saber tabatabaee yazdi 3/16/2021
我有python3.exe并将其路径添加到我的本地主机,但是重新启动CMD后,它没有效果,没有错误,没有响应。向我展示一个新的命令行。:o
0赞 Manish Rana 5/6/2022
*当安装了两个 Python 版本时,“py -3 manage.py runserver” py 命令随 Python3.x 一起提供,并允许在多个 Python 解释器中进行选择。例如,如果您同时安装了 Python 3.4 和 2.7,则 py -2 将启动 python2.7,py -3 将启动 python3.4 。如果你只使用 py,它将启动定义为默认值的那个。
0赞 ishaj 5/19/2023
它真的对我有用。谢谢救世主!
0赞 Tara Prasad Gurung 4/1/2018 #8

我想知道的是,尽管 django 已安装到容器中,但它可能不在运行该命令的主机中。那么命令将如何运行。因此,由于上述解决方案对我不起作用。

我找到了正在运行的容器并进入正在运行的容器,然后在 docker 容器中运行了命令。由于我们有卷容器,所做的更改也将反映在本地。无论要运行什么命令,都可以在正在运行的容器内运行docker exec -it <container> bash

1赞 chie 5/2/2018 #9

django-admin 可能是错误的文件。我遇到了同样的问题,我在另一台计算机上没有发现相同的设置流程。

在比较了两个项目之后,我发现 manage.py 和 settings.py 有一些不同之处,然后我意识到我创建了 2.0 django 项目,但使用 python2 运行它。

Runin iTermwhich django-admin

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

看起来我在 python3 中得到了一个 django-admin,我不知道为什么。所以我试图得到正确的 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: [email protected]
License: BSD
Location: /Library/Python/2.7/site-packages
Requires: pytz

在里面,我找到了 django-admin/Library/Python/2.7/site-packages

/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

成功🎉

0赞 CodeSsscala 5/5/2018 #10

对于未来的读者, 我也有同样的问题。事实证明,直接从网站安装 Python 以及从 Anaconda 使用另一个版本导致了此问题。我不得不卸载 Python2.7 并只保留 anaconda 作为唯一的发行版。

0赞 tomilia 5/19/2018 #11

你进入了 django 的虚拟环境吗?如果尚未安装,请运行。python -m venv myvenv

1赞 Shikha Mangal 6/7/2018 #12

我们必须在项目内部创建一个虚拟环境,而不是在项目外部。 然后它会解决..

16赞 Martin Karari 6/21/2018 #13

我遇到了同样的情况,但这是通过运行特定的 python 3.6 来解决的,如下所示:

python3.6 manage.py runserver
2赞 Wasique Ansari 7/17/2018 #14

您必须激活安装了 django 的虚拟环境。 然后运行此命令 - python manage.py runserver

0赞 Stanislau Baranouski 7/18/2018 #15

只需做:

pipenv shell

然后重复:

python manage.py runserver

并且不要按照上面的建议删除。from exc

1赞 Premium Ayodele 7/31/2018 #16

您的计算机上似乎有多个版本的 Python。 尝试删除一个版本,并保留用于开发应用程序的唯一版本。

如果需要,您可以升级您的版本,但请确保您的计算机上只有一个 Python 版本。

0赞 Keivan 8/3/2018 #17

我有同样的问题,可以解决它。它与你安装的 Django 版本有关,其中一些是 python 2.7 不支持的。如果你已经用 pip 安装了 Django,这意味着你正在安装最新版本的 python 2.7 可能不支持它,你可以在这里获得更多关于它的信息。我建议在安装过程中使用 python 3 或指定 Django 的版本(python 2.7 为 1.11)。

-1赞 SAMARAT ADITYA 8/16/2018 #18

你可以只提你的 python 版本,像这样,

python3.5 manage.py runserver   
14赞 Sbk3824 9/30/2018 #19

最好创建一个虚拟环境,并在这个虚拟环境中运行你的 Django 代码,这有助于不改变你现有的环境。以下是从虚拟环境和 Django 开始的基本步骤。

  1. 创建一个新目录并 cd 到其中。

    mkdir test,cd test

  2. 安装并创建虚拟环境。

python3 -m pip install virtualenv virtualenv venv -p python3

  1. 激活虚拟环境:source venv/bin/activate

  2. 安装 Django:pip install django

  3. 开始一个新项目:django-admin startproject myproject

  4. cd 到您的项目并运行项目:

cd myproject,

python manage.py runserver
  1. 您可以在此处查看您的项目:http://127.0.0.1:8000/

评论

1赞 michael-mammut 2/29/2020
干的好!通过这个“教程”,很清楚它是如何工作的。在位于文件夹中django3activate.\venv\Script
0赞 Muhammad Faizan Fareed 1/29/2019 #20

我解决了这个问题以卸载多个版本的 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)

如果从此代码的倒数第二行中删除“from exc”将由于多个版本的 Python 而生成另一个错误。

0赞 Vinod Ranga 2/20/2019 #21

通过以下命令激活 env

  source  pathetoYourEnv/bin/activate

然后运行命令

python manage.py runserver
3赞 Otsuki Takaya 3/21/2019 #22

我解决了同样的情况。

安装的版本

Python 3.6、Django 2.1

情况

我在 Windows 10 中安装了 Node.js。引起错误后。python manage.py runserver

错误

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

原因

我的 python 路径从 python-3.6 更改为 python-2.7。(3.6 在我的电脑中是正确的。

溶液

修复 python 路径。

2赞 rishabh jain 3/22/2019 #23

您应该启动虚拟环境

怎么做?

首先用终端 cd 进入包含 manage.py 的目录

然后键入 replace 替换为您的虚拟环境名称,不带尖括号。$source <myvenv>/bin/activate

另一个问题可能是您的根目录和 venv 不匹配。 结构应如下所示:

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

这是您的虚拟环境,manage.py 应该位于同一文件夹中。解决方案是重新启动项目。如果您遇到此错误,则必须尚未编写任何代码,因此请重新启动。

1赞 Billal Begueradj 4/28/2019 #24

我遇到了同样的异常,因为我忘记激活虚拟环境。

3赞 imbond 6/27/2019 #25

以下可能是可能的原因,

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

评论

0赞 PSN 9/2/2020
2.大多数时候,不同的python版本是问题。+1 这个答案。
2赞 Sanjay Thapa 7/8/2019 #26

我遇到了完全相同的错误,但后来我发现我忘记激活安装了 django 和其他所需软件包的 conda 环境。

解决方案:创建一个安装了 django 的 conda 或虚拟环境, 并在使用命令之前激活它:

$ python manage.py migrate 
1赞 Pooja Khatri 10/23/2019 #27

我也遇到了同样的错误。enter image description here

然后我回到环境文件夹所在的文件夹,我忘记激活虚拟环境,所以只有我收到此错误。enter image description here

转到该文件夹并激活虚拟环境。

$ source env/bin/activate
0赞 Nabila Tajrin 12/8/2019 #28

当我使用以下命令激活虚拟环境时,也解决了我的问题:

source bin/activate
1赞 cfranklin 12/26/2019 #29

我遇到了这个问题(Mac),并按照以下页面上的说明安装和激活虚拟环境

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

$ cd [ 顶级 django 项目目录 ]

$ python3 -m pip 安装 --user virtualenv

$ python3 -m venv env 环境

$ 源 env/bin/activate

一旦我安装并激活了虚拟环境,我就检查了它

$ 哪个 python

然后我将 django 安装到虚拟环境中

$ pip 安装 django

然后我就可以运行我的应用程序了

$ python3 manage.py 运行服务器

当我进入本教程的下一部分时

$ python manage.py startapp 民意调查

我遇到了另一个错误:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

我删除了

from exc

然后它创建了 polls 目录

17赞 Parth Patel 3/16/2020 #30

要运行 Python 版本 3,您需要使用 而不是 .python3python

最后一个命令将是:

python3 manage.py runserver
0赞 gildniy 4/19/2020 #31

该错误是通过将更高版本的 Django 与旧 python(可能是 2.x 版本)一起使用而生成的。

为了解决这个问题,我不得不删除该文件夹并用.venvvirtualenv -p python3 .venv && source .venv/bin/activate

4赞 optimus 6/15/2020 #32

解决方案很简单。manage.py 例外 是因为当使用 python 运行命令时,Django 无法 要预测确切的 Python 版本, 假设你可能有 3.6、3.5、3.8,也许只有一个版本的 pip 模块用于安装 Django 要解决此问题,请使用:

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

或使用确切的 Python 版本(x.x) 支架:

pythonx.x manage.py <command>

否则,使用虚拟环境会派上用场 因为它很容易将任何 pip django 模块与 python 版本相关联

  • 使用 pyenv 或 virtualenv 创建 env
  • 激活(例如,在 virtualenv => virtualenv env)
  • 使用 python manage.py 命令运行
2赞 Maran Sowthri 10/12/2020 #33

激活您的虚拟环境,然后尝试收集静态文件,这应该可以工作。

$ source venv/bin/activate
$ python manage.py collectstatic
0赞 Tiago Martins Peres 10/12/2020 #34

您可以通过将 manage.py 文件中的代码调整为以下内容来解决此问题

#!/usr/bin/env python
import os
import sys


if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangochallenge.settings")
    try:
        from django.core.management import execute_from_command_line
    except ImportError:
        try:
            import django
        except ImportError:
            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?"
            )
        raise
    execute_from_command_line(sys.argv)

你的服务器应该工作正常。

1赞 SudhakarH 12/31/2020 #35

同样的问题也发生在我身上,但我所做的是,

刚刚更换:

python manage.py runserver

python3 manage.py runserver

在终端(macOsX)中。因为我使用的是 Python 3.x 版

1赞 Quintin Henn 4/15/2021 #36

我在使用 pipenv 时遇到了同样的错误。该问题是由于无法从虚拟环境中正确访问 Django 引起的。

使用 pipenv 的正确步骤:

  1. 激活虚拟环境:pipenv shell
  2. 安装 Django:pipenv install django
  3. 创建项目:django-admin startproject myproject
  4. 导航到项目文件夹:cd myproject
  5. 使用 pipenv 启动 Django:pipenv run python manage.py runserver

注意:Pipenv 将在虚拟环境中使用正确的 python 版本和 pip。

0赞 user13774796 4/29/2021 #37

这通常发生在未安装 Django 并且您正在尝试运行该文件时。运行 or or or 首先安装 Django。manage.pypip3 install djangopip install djangopython -m pip install djangopython3 -m pip install django

如果你认为你已经安装了 Django,请运行 ///。如果你得到一个 ,这意味着你还没有安装 Django。pippip3python -m pippython3 -m pip show djangoWarning: Package(s) not found: django

如果您有虚拟环境,请运行以激活基于 Unix 的系统(如 Mac 或 Linux)上的环境,其中包含虚拟环境的文件夹。在 Windows 上,运行以激活环境。source env/bin/activateenvenv\Scripts\activate

0赞 surendra ediga 8/5/2021 #38

对我来说,这段代码有效

python3 manage.py runserver
0赞 Lane Henslee 7/3/2022 #39

这是我用一些额外的隐藏知识在 linux 上解决问题的超级书方法。如果你知道,你就知道;)

  1. 安装 Vim
sudo apt install vim 
  1. 将 JJ 映射到 Escape for Vim
vim ~/.vimrc
O
imap jj <Esc>
press the escape key
  1. 从现在开始使用“python”而不是“python3”。
vim ~/.bashrc
G
o
alias python=python3
jj
:wq
source ~/.bashrc
0赞 SweetPotato 10/4/2022 #40

最可能的原因是您没有激活项目中的虚拟环境。

要解决它:

  1. 激活虚拟环境
  2. python manage.py runserver

评论

0赞 Sören 10/9/2022
此答案不会对现有答案添加任何内容。