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

我正在学习 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

添加自动生成的 manager. 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)
244008 次浏览

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

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

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

确保将 django 连接到 (确保激活虚拟环境,如果您正在使用任何)。的 Python 版本

当您使用 just 安装 django 时

pip install django

那你就得逃跑

python manage.py startapp <yourApp name>

如果使用了: ,则为 else

pip3 install django

那你就得逃跑

python3 manage.py startapp <yourapp name>

参考:
enter image description here

激活你的虚拟环境。

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

我的终端截图

您应该激活您的虚拟环境。 在终端中,source env/bin/activate。根据您的 shell,类似 (env)的内容现在应该是提示符的一部分。

现在 runserver应该可以工作了。不需要删除额外的部分!

你可以试试 python3 manage.py runserver。 对我有用。

我想知道的是,虽然 django 被安装到容器中,但它可能不在运行命令的主机中。那么命令将如何运行。所以既然上面的解决方案对我没有效果。

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

Django 管理员可能是错误的文件。我遇到了同样的问题,我没有在不同的计算机上发现同样的设置流程。

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

在条目中运行

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

看起来我在 python3里找到了一个姜戈管理员,我不知道为什么,所以我试图找到正确的姜戈管理员。

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

成功了

对于未来的读者, 我也有同样的问题。事实证明,直接从网站安装 Python 以及从阿纳康达安装另一个版本导致了这个问题。我不得不卸载 Python 2.7,并且只保留水蟒作为唯一的发行版。

进入 django 的虚拟环境了吗? 如果还没有安装,请运行 python -m venv myvenv

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

我也遇到过同样的问题,但是通过使用特定的 python 3.6解决了这个问题,如下所示:

python3.6 manage.py runserver

您必须激活安装了 django 的虚拟环境。 然后运行这个命令 - < strong > < em > python management. py runserver

只要做:

pipenv shell

然后重复:

python manage.py runserver

不要像上面建议的那样删除 from exc

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

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

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

你可以像这样提到你的蟒蛇版本,

python3.5 manage.py runserver

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

  1. 创建一个新的目录并将光盘放入其中。

    mkdir testcd 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/

我解决了这个问题,卸载了多个版本的 Python。 检查 姜戈正式文件是否与 Python 兼容。

Python 兼容性

Django 2.1支持 Python 3.5、3.6和3.7. Django 2.0是最后一个支持 Python 3.4的版本。”

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 的多个版本而产生另一个错误。

通过以下命令激活 env

  source  pathetoYourEnv/bin/activate

然后运行命令

python manage.py runserver

我解决了同样的问题。

安装版本

Python 3.6,django 2.1

情况

我在 Windows 10中安装了 Node.js。

错误

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

原因

我的 python 路径从 python-3.6更改为 python-2.7

解决方案

修正巨蟒路径。

您应该启动您的虚拟环境 ,

怎么做?

首先将终端 cd 放入包含 manage.py 的目录中

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

另一个问题是根目录和 venv 不匹配。 结构应该是这样的:

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

这就是您的虚拟环境,Manage.py 应该在同一个文件夹中。解决方案是重新启动项目。如果您正面临这个错误,那么您肯定还没有编写任何代码,所以请重新启动。

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

以下可能是原因,

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

我有完全相同的错误,但后来我发现我忘记激活 conda 环境已经 django 和其他必需的包安装。

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

$ python manage.py migrate

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

然后我回到文件夹中的环境文件夹在那里,我忘记激活虚拟环境,所以只有我得到这个错误。 enter image description here

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

$ source env/bin/activate

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

source bin/activate

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

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

$cd [顶级-django-project-dir ]

$python3-m pip install —— user viralenv

$python3-m venv env

$source env/bin/active

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

$哪条蟒蛇

然后我在虚拟环境中安装了 django

$pip install django

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

$python3 management. py runserver

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

$python management py startapp 民意调查

我遇到了另一个错误:

     File "manage.py", line 16


) from exc
^


SyntaxError: invalid syntax

我移除了

from exc

然后它创建了投票目录

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

最后的命令是:

python3 manage.py runserver

这个错误是通过使用更新版本的 Django 和旧的 python (可能是2.x 版本)产生的。

为了解决这个问题,我必须删除 .venv文件夹并用 virtualenv -p python3 .venv && source .venv/bin/activate重新创建它

解决方案很简单 是因为在使用 python 运行命令时,Django 无法 来预测蟒蛇的精确版本, 假设你可能有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 或 viralenv 创建 env
  • 激活(例如,在 viralenv = > viralenv env 中)
  • 使用 python management. py 命令运行

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

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

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

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

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

刚刚被取代:

python manage.py runserver

python3 manage.py runserver

因为我使用的是 Python3.x 版本

我在使用 Pipenv时遇到了同样的错误。问题是由于没有从虚拟环境中正确访问 Django 造成的。

使用 pipenv 的正确步骤:

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

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

这通常发生在没有安装 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。

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

对我来说,这个代码起作用了

python3 manage.py runserver

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

  1. 安装 vim
sudo apt install vim
  1. 把 JJ 画成 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

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

为了解决这个问题:

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