提问人:Frank 提问时间:3/6/2017 最后编辑:Zoe is on strikeFrank 更新时间:10/4/2022 访问量:259794
如何解决自动生成的 manage.py 上的语法错误?
How to solve SyntaxError on autogenerated manage.py?
问:
我正在按照 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)
答:
在使用精确的指令进行测试(使用 python2 或 python3 而不仅仅是“python”)之后,我表示无论教程怎么说,这仅适用于 python3。
此外,本教程建议使用虚拟环境(参见 Django 文档:https://docs.djangoproject.com/en/2.0/topics/install/#installing-official-release“)。您可以使用 来执行此操作。一旦你安装了 django 并使用 激活了你的虚拟环境,python 将在执行时引用 python3。pipenv --three
pipenv install django
pipenv shell
python manage.py runserver
Pipenv 文档:https://pipenv.kennethreitz.org/
确保你使用哪个 python 版本连接 django(如果你使用任何虚拟环境,请确保激活虚拟环境)。
当你安装 django 时,只使用
pip install django
然后你必须运行
python manage.py startapp <yourApp name>
否则,如果您使用过:
pip3 install django
然后你必须运行
python3 manage.py startapp <yourapp name>
评论
python manage.py migrate
python3 manage.py migrate
只需激活您的虚拟环境即可。
评论
这是一个简单的解决方案,实际上是我刚刚遇到的一个。您是否激活了虚拟环境?
您应该激活您的虚拟环境。
在终端中,.根据您的 shell,现在应该成为提示的一部分。source env/bin/activate
(env)
现在应该可以工作了。无需删除 exc 部分!runserver
评论
activate
Scripts
source venv/Scripts/activate
您可以尝试使用 .
它对我有用。python3 manage.py runserver
评论
我想知道的是,尽管 django 已安装到容器中,但它可能不在运行该命令的主机中。那么命令将如何运行。因此,由于上述解决方案对我不起作用。
我找到了正在运行的容器并进入正在运行的容器,然后在 docker 容器中运行了命令。由于我们有卷容器,所做的更改也将反映在本地。无论要运行什么命令,都可以在正在运行的容器内运行docker exec -it <container> bash
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
成功🎉
对于未来的读者, 我也有同样的问题。事实证明,直接从网站安装 Python 以及从 Anaconda 使用另一个版本导致了此问题。我不得不卸载 Python2.7 并只保留 anaconda 作为唯一的发行版。
你进入了 django 的虚拟环境吗?如果尚未安装,请运行。python -m venv myvenv
我们必须在项目内部创建一个虚拟环境,而不是在项目外部。 然后它会解决..
我遇到了同样的情况,但这是通过运行特定的 python 3.6 来解决的,如下所示:
python3.6 manage.py runserver
您必须激活安装了 django 的虚拟环境。 然后运行此命令 - python manage.py runserver
只需做:
pipenv shell
然后重复:
python manage.py runserver
并且不要按照上面的建议删除。from exc
您的计算机上似乎有多个版本的 Python。 尝试删除一个版本,并保留用于开发应用程序的唯一版本。
如果需要,您可以升级您的版本,但请确保您的计算机上只有一个 Python 版本。
我有同样的问题,可以解决它。它与你安装的 Django 版本有关,其中一些是 python 2.7 不支持的。如果你已经用 pip 安装了 Django,这意味着你正在安装最新版本的 python 2.7 可能不支持它,你可以在这里获得更多关于它的信息。我建议在安装过程中使用 python 3 或指定 Django 的版本(python 2.7 为 1.11)。
你可以只提你的 python 版本,像这样,
python3.5 manage.py runserver
最好创建一个虚拟环境,并在这个虚拟环境中运行你的 Django 代码,这有助于不改变你现有的环境。以下是从虚拟环境和 Django 开始的基本步骤。
创建一个新目录并 cd 到其中。
mkdir test
,cd test
安装并创建虚拟环境。
python3 -m pip install virtualenv virtualenv venv -p python3
激活虚拟环境:
source venv/bin/activate
安装 Django:
pip install django
开始一个新项目:
django-admin startproject myproject
cd 到您的项目并运行项目:
cd myproject
,
python manage.py runserver
- 您可以在此处查看您的项目:
http://127.0.0.1:8000/
评论
django3
activate
.\venv\Script
我解决了这个问题以卸载多个版本的 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 而生成另一个错误。
通过以下命令激活 env
source pathetoYourEnv/bin/activate
然后运行命令
python manage.py runserver
我解决了同样的情况。
安装的版本
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 路径。
您应该启动虚拟环境,
怎么做?
首先用终端 cd 进入包含 manage.py 的目录
然后键入 replace 替换为您的虚拟环境名称,不带尖括号。$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
评论
我遇到了完全相同的错误,但后来我发现我忘记激活安装了 django 和其他所需软件包的 conda 环境。
解决方案:创建一个安装了 django 的 conda 或虚拟环境, 并在使用命令之前激活它:
$ python manage.py migrate
然后我回到环境文件夹所在的文件夹,我忘记激活虚拟环境,所以只有我收到此错误。
转到该文件夹并激活虚拟环境。
$ source env/bin/activate
当我使用以下命令激活虚拟环境时,也解决了我的问题:
source bin/activate
我遇到了这个问题(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 目录
要运行 Python 版本 3,您需要使用 而不是 .python3
python
最后一个命令将是:
python3 manage.py runserver
该错误是通过将更高版本的 Django 与旧 python(可能是 2.x 版本)一起使用而生成的。
为了解决这个问题,我不得不删除该文件夹并用.venv
virtualenv -p python3 .venv && source .venv/bin/activate
解决方案很简单。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 命令运行
激活您的虚拟环境,然后尝试收集静态文件,这应该可以工作。
$ 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
在终端(macOsX)中。因为我使用的是 Python 3.x 版
我在使用 pipenv 时遇到了同样的错误。该问题是由于无法从虚拟环境中正确访问 Django 引起的。
使用 pipenv 的正确步骤:
- 激活虚拟环境:
pipenv shell
- 安装 Django:
pipenv install django
- 创建项目:
django-admin startproject myproject
- 导航到项目文件夹:
cd myproject
- 使用 pipenv 启动 Django:
pipenv run python manage.py runserver
注意:Pipenv 将在虚拟环境中使用正确的 python 版本和 pip。
这通常发生在未安装 Django 并且您正在尝试运行该文件时。运行 or or or 首先安装 Django。manage.py
pip3 install django
pip install django
python -m pip install django
python3 -m pip install django
如果你认为你已经安装了 Django,请运行 ///。如果你得到一个 ,这意味着你还没有安装 Django。pip
pip3
python -m pip
python3 -m pip show django
Warning: Package(s) not found: django
如果您有虚拟环境,请运行以激活基于 Unix 的系统(如 Mac 或 Linux)上的环境,其中包含虚拟环境的文件夹。在 Windows 上,运行以激活环境。source env/bin/activate
env
env\Scripts\activate
对我来说,这段代码有效
python3 manage.py runserver
这是我用一些额外的隐藏知识在 linux 上解决问题的超级书方法。如果你知道,你就知道;)
- 安装 Vim
sudo apt install vim
- 将 JJ 映射到 Escape for Vim
vim ~/.vimrc
O
imap jj <Esc>
press the escape key
- 从现在开始使用“python”而不是“python3”。
vim ~/.bashrc
G
o
alias python=python3
jj
:wq
source ~/.bashrc
最可能的原因是您没有激活项目中的虚拟环境。
要解决它:
- 激活虚拟环境
python manage.py runserver
评论
.\venv\scripts\activate