使用python 3在virtualenv中启动django项目时出现Django syntaxError
Posted
技术标签:
【中文标题】使用python 3在virtualenv中启动django项目时出现Django syntaxError【英文标题】:Django syntaxError when starting django project in virtualenv with python 3 【发布时间】:2018-10-26 04:55:02 【问题描述】:一个问题very similar to this one已经存在,但它是关于python2的。 In another related question 用户没有激活他们的虚拟环境。我做到了。
在一个较大的项目中遇到这个问题后,我尝试并成功地将其复制到一个全新的项目中。
在空文件夹 test-django 中,我运行了以下内容:
virtualenv env
env/scripts/activate
pip install django
为了确保 python 已经成功安装了 django,我尝试了:
python
import django
未引发导入错误,运行的 Python 版本为 Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49)
于是我开始了这个项目……
django-admin startproject test
项目测试确实创建成功。然后我跑了:
cd test
./manage.py
得到了
文件“test-django\test\manage.py”,第 14 行 ) 来自 exc ^ SyntaxError: 无效语法
manage.py的内容是:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "phoenix2.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)
当我删除“从 exc”时,ImportError 成功引发 - 但我不应该得到 ImportError,从安装了 django 的虚拟环境中运行。
我尝试运行(从命令行中的 Python)
from django.core.management import execute_from_command_line
并且没有收到 ImportError
虚拟环境中sys.path的内容:
['', '\test-django\env\Scripts\python36.zip', '\test-django\env\DLLs', '\temp\test-django\env\lib', '\test- django\env\Scripts', 'c:\python36\Lib', 'c:\python36\DLLs', '\test-django\env', '\test-django\env\lib\site-packages']
运行 django-admin --version: 2.0.5
如果有帮助,这里是通用系统python的路径内容:
['', 'C:\Python36\python36.zip', 'C:\Python36\DLLs', 'C:\Python36\lib', 'C:\Python36', 'C:\Python36\lib \site-packages']
virtualenv 中的 pip 冻结:
Django==2.0.5 pytz==2018.4
python 中的 pip freeze:
appdirs==1.4.3 lxml==4.0.0 包装==16.8 pyparsing==2.2.0 六==1.10.0 virtualenv==15.1.0
【问题讨论】:
你能发布整个异常回溯吗? 我发布的是给定的全部回溯 【参考方案1】:This is the simple way to start new django project:-
In terminal do following steps
$ mkvirtualenv <env_name>
$ workon <env_name>
$ pip install django
$ django-admin startproject <project_name>
$ cd <project_name>
$ ./manage.py migrate
$ ./manage.py runserver
open this in browser http://127.0.0.1:8000/
open the project in pychram and then do this
click on file -> settings -> projects interpreter -> add local -> select <env_name> -> click bin -> click python3 or python2 -> apply -> OK
【讨论】:
【参考方案2】:运行python3 manage.py
而不是./manage.py
怎么样?
我建议使用pipenv
而不是 virtualenv+pip。
【讨论】:
我跑了python -V,是3.6.3以上是关于使用python 3在virtualenv中启动django项目时出现Django syntaxError的主要内容,如果未能解决你的问题,请参考以下文章
如何从虚拟环境(virtualenv)启动 python Idle
Gunicorn + Django + Virtualenv + init.d 服务(CentOS)
在Windows下的virtualenv中搭建Flask+MySQLDb开发环境