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

时间:2017-03-05 17:27:38

标签: python syntax-error

我正在关注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)

38 个答案:

答案 0 :(得分:54)

确保将django连接到哪个python版本。

当你使用pip install django安装django时,你必须运行python manage.py startapp else如果你使用pip3 Click here to view terminal example安装django,那么你必须运行python3 manage.py startapp

答案 1 :(得分:15)

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

答案 2 :(得分:13)

您应该激活您的虚拟环境。 在终端 - > source env / bin / activate 现在会有----> (env)在您的终端显示!

现在它会起作用 - > runserver。

无需删除exc部分!

答案 3 :(得分:8)

它实际上是一个简单的解决方案。您是否激活了虚拟环境?

my terminal screenshot

答案 4 :(得分:7)

我遇到了相同的情况,但这是通过使用以下特定的python 3.6运行解决的:

python3.6 manage.py runserver

答案 5 :(得分:5)

要运行Python版本3,您需要使用python3而不是python

因此,最后的命令将是:

python3 manage.py runserver

答案 6 :(得分:5)

在使用精确指令(使用python2或python3而不仅仅是“python”)进行测试后,我已经确定了无论教程说什么,这只适用于python3。

答案 7 :(得分:4)

解决方案很简单。来自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创建环境
  • 激活(例如在virtualenv => virtualenv env中)
  • 使用python manage.py命令运行

答案 8 :(得分:4)

最好创建一个虚拟环境并在此虚拟​​环境中运行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到您的项目并运行项目:

    cd myprojectpython manage.py runserver

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

答案 9 :(得分:3)

只需删除from exec部分即可获得类似

的内容
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?"
        )
    execute_from_command_line(sys.argv)

答案 10 :(得分:2)

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

答案 11 :(得分:1)

此外,本教程还建议使用虚拟环境(请参阅Django文档:https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release&#34;)。您可以使用pipenv --three执行此操作。使用pipenv install django安装django并使用pipenv shell激活虚拟环境后,python将在执行python manage.py runserver时引用python3。

Pipenv文件: https://docs.pipenv.org/

答案 12 :(得分:1)

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

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

我希望这会有所帮助。

答案 13 :(得分:1)

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

答案 14 :(得分:1)

我在使用 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。

答案 15 :(得分:1)

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

在比较了两个项目之后,我在manage.py和settings.py上找到了一些区别,然后我意识到我创建了2.0 django项目但是用python2运行它。

在iterm中运行let appDelegate = UIApplication.shared.delegate as! AppDelegate var aVC: AViewController? if let viewControllers = appDelegate.window?.rootViewController?.childViewControllers { for vc in viewControllers { print(vc.debugDescription) if vc.isKind(of: AViewController.self) { aVC = vc as! AViewController break } } } if let vc = aVC { let navigation = UINavigationController(rootViewController: vc) AppDelegate.delegate().setRootViewController(view: navigation) } else { let vc = self.storyboard?.instantiateViewController(withIdentifier: "AViewController") as? AViewController self.present(vc!, animated: true) }

class AManager {
     static let sharedInstance = AManager()
}

看起来我在python3中有一个django-admin,我不知道为什么。所以我试图得到正确的django-amin。

which django-admin
然后我得到了

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

pip show django 中,我找到了django-admin

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

然后运行

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

成功

答案 16 :(得分:0)

我遇到了同样的问题,但我所做的是,

刚刚替换:

python manage.py runserver

python3 manage.py runserver

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

答案 17 :(得分:0)

您可以通过将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)

,您的服务器应该可以正常工作。

答案 18 :(得分:0)

激活您的虚拟环境,然后尝试收集应该起作用的静态文件。

$ source venv/bin/activate
$ python manage.py collectstatic

答案 19 :(得分:0)

这通常发生在未安装 Django 而您尝试运行 manage.py 文件时。运行 pip3 install djangopip install djangopython -m pip install djangopython3 -m pip install django 以先安装 Django。

如果您认为自己已经安装了 Django,请运行 pip/pip3/python -m pip/python3 -m pip show django。如果您得到 Warning: Package(s) not found: django,则表示您尚未安装 Django。

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

答案 20 :(得分:0)

使用更高版本的Django和旧的python(可能是2.x版本)生成错误。

要解决此问题,我必须删除.venv文件夹并使用virtualenv -p python3 .venv && source .venv/bin/activate重新创建

答案 21 :(得分:0)

对我来说,这段代码有效

python3 manage.py runserver

答案 22 :(得分:0)

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

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

  

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

     

$ python3 -m pip install --user virtualenv

     

$ python3 -m venv env

     

$ source env / bin / activate

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

  

$哪个python

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

  

$ pip安装Django

然后我可以运行我的应用

  

$ python3 manage.py runserver

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

  

$ python manage.py startapp民意调查

我遇到了另一个错误:

     File "manage.py", line 16

   ) from exc
            ^

   SyntaxError: invalid syntax

我删除了

from exc

然后它创建了民意调查目录

答案 23 :(得分:0)

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

source bin/activate

答案 24 :(得分:0)

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

然后,我返回到环境文件夹所在的文件夹,并且我忘记了激活虚拟环境,因此只有我遇到此错误。 enter image description here

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

$ source env/bin/activate

答案 25 :(得分:0)

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

解决方案:创建一个安装了django的conda或虚拟环境, 并在使用命令之前将其激活: $ python manage.py migrate

答案 26 :(得分:0)

以下可能是可能的原因,

liquibase.exception.MigrationFailedException: Migration failed for change set /changelog/00000000000001.xml::00000000000001::IAmUser:
 Reason: java.lang.NumberFormatException: For input string: "0000000Z"

创建虚拟环境

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

激活虚拟环境

$ virtualenv --python=python3 venv

答案 27 :(得分:0)

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

答案 28 :(得分:0)

您应该启动虚拟环境

怎么做?

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

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

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

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

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

答案 29 :(得分:0)

我解决了同样的情况。

安装的版本

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。 (我的PC上的3.6是正确的。)

解决方案

修复python路径。

答案 30 :(得分:0)

通过以下命令激活环境

menuItems = [
  {
    title: 'Key Leadership'
  },
  {
    title: 'Financial Results'
  },
  {
    title: 'Business Summary',
    values: [
      { title: 'Key Strategy'},
      { title: 'CompanyInReport'}
    ]
  },
  {
    title: 'Operating Locations'
  }]

然后运行命令

  source  pathetoYourEnv/bin/activate

答案 31 :(得分:0)

我解决了这个问题,以卸载多个版本的Python。 检查Django Official Documentation是否具有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,还会产生另一个错误。

答案 32 :(得分:0)

只需描述您的python版本

=> python3.5 manage.py runserver

(我的python版本= 3.5)

答案 33 :(得分:0)

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

答案 34 :(得分:0)

只需:

pipenv shell

然后重复:

python manage.py runserver

并且不要如上所述删除from exc

欢呼!

答案 35 :(得分:0)

您是否已进入django的虚拟环境?如果尚未安装,请运行python -m venv myvenv

答案 36 :(得分:0)

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

答案 37 :(得分:0)

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

我找到了正在运行的容器并使用docker exec -it <container> bash进入正在运行的容器,然后在docker容器中运行命令。由于我们有自备容器,所做的更改也将在本地反映出来。要运行的命令可以在正在运行的容器中运行