使用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创建虚拟环境

在Windows下的virtualenv中搭建Flask+MySQLDb开发环境

在 3.5.3 virtualenv 中运行时,Vim 中的 Python 错误

python virtualenv