如何在自动生成的manage.py上解决SyntaxError?


109

我正在遵循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)

请发布具有语法错误的整个文件(或至少其中的更多内容)的内容。
斯科韦塔

10
该文件旨在与Python 3配合使用(请注意,它是第一行!),并且在2.7中不起作用。
杰森哈珀(Jasonharper)

教程网络说,当部分代码无法在2.7中使用时,它们将在注释中添加所需的修改。它没有列出任何修改,所以我认为它会起作用...
Frank

Answers:


106

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

当您仅使用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
我忘了激活我的虚拟环境。
Bobort

46

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


27

您应该激活虚拟环境。在终端->源env / bin / activate中,现在将在您的终端中显示-----(env)!

现在它将工作-> runserver。

无需删除部分!





9

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

  1. 创建一个新目录并CD进入。

    mkdir testcd 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到您的项目并运行Project:

    cd myprojectpython manage.py runserver

  7. 您可以在这里看到您的项目: http://127.0.0.1:8000/


做得好!通过这个“教程”,它是如何工作的很清楚。中django3activate位于.\venv\Script文件夹中
michael-mammut

8

经过精确的指令测试(使用python2或python3而不是仅仅使用“ python”),我认为无论本教程怎么说,这仅适用于python3。



3

解决方案很简单。来自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版本相关联

  • 用pyenv或virtualenv创建环境
  • 激活(例如在virtualenv => virtualenv env中)
  • 使用python manage.py命令运行


2

我解决了同样的情况。

安装版本

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

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

解决方案:创建安装了django的conda或虚拟环境,并在使用以下命令之前将其激活: $ 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

看起来我在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: 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. 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

1

我也遇到了同样的错误。 在此处输入图片说明

然后,我回到了环境文件夹所在的文件夹,却忘记了激活虚拟环境,因此只有我遇到了此错误。 在此处输入图片说明

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

$ source env/bin/activate


0

我想知道的是,虽然django已安装到容器中,但它可能不在您运行命令的主机中。然后该命令将如何运行。因此,由于没有上述解决方案对我有用。

我找到了运行中的容器并使用进入了运行中的容器,docker exec -it <container> bash 然后在docker容器中运行了命令。当我们拥有大容量的容器时,所做的更改也会在本地反映出来。可以运行的命令都可以在运行容器中运行


0

对于将来的读者,我也有同样的问题。原来直接从网站安装Python以及Anaconda的另一个版本导致了此问题。我必须卸载Python2.7并仅保留anaconda作为唯一发行版。


0

您是否已进入django的虚拟环境?运行python -m venv myvenv,如果你还没有安装。



0

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


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)

如果从此代码的第二行中删除“ from exc”,则由于多个版本的Python会产生另一个错误。



0

您应该启动虚拟环境

怎么做?

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

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

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

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

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



0

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

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

$ cd [顶级django-project-dir]

$ python3 -m pip install --user virtualenv

$ python3 -m venv env

$ source env / bin / activate

安装并激活虚拟环境后,我对其进行了检查

$哪个蟒蛇

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

$ pip install django

然后我可以运行我的应用

$ python3 manage.py运行服务器

当我到达本教程的下一部分时

$ python manage.py startapp民意调查

我遇到了另一个错误:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

我删除了

from exc

然后创建民意调查目录

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.