Django manage.py runserver 语法无效

20

我正在使用Django开发Ubuntu上的网站,一切正常。现在,我想更换计算机,使用的是Windows系统。当我尝试运行服务器时,它会报错:

E:\DEGNet>py manage.py runserver
  File "manage.py", line 14
    ) from exc
         ^
SyntaxError: invalid syntax

E:\DEGNet>py
Python 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]
 on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

如上所示,我已经安装了Python 3.6.3。我也使用pip3安装了django和其他必要的库。

编辑:manage.py文件,这是我生成项目时得到的默认manage.py文件。

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DEGNet.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)

你能提供manage.py吗? - Nae
我已经更新了问题,附带了manage.py文件的内容。 - Bharata
从您的manage.py文件中删除from exc这些单词可能会解决您的问题。尝试一下。 - arulmr
你为什么修改了生成的 manage.py 文件? - Gahan
我没有改变任何东西。我从我的Ubuntu电脑上复制了它。在Ubuntu中它正常工作。 - Bharata
1
我多次遇到了这个错误,而导致这个错误的原因是我的环境没有激活,这也可能是你遇到这个问题的原因。 - Vikas Gautam
17个回答

37

我遇到过同样的问题,但现在通过这个命令已经解决了:

python3 manage.py runserver

3
这是正确的解决方案。如果您同时拥有Python 2和Python 3,那么默认情况下,/usr/bin中的python指向Python 2。因此,需要为Python 3安装django,否则会出现错误。使用python3 manage.py runserver命令即可正常运行。感谢提示。 - Doogle
只有在安装了Python2和Python3时,这才是有效的解决方案,但即使您只安装了Python 2发行版,错误也可能会发生。 - Krzysztof Krzeszewski

20

请按照以下方式编辑您的manage.py文件:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DEGNet.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)

请注意,文件中已删除 from exc。在 manage.py 文件中不需要它。

17
这可能会解决“无效语法”错误,但并不能解决真正的问题:您为Python 3安装了Django,现在在尝试使用Python 2运行时出现错误。真正的解决方法是使用正确的Python版本。 - Alasdair

7
  1. 确保您的虚拟环境已激活。假设您的虚拟环境名称为pythonpy,则运行以下命令:

    virtualenv pythonpy workon pythonpy # 运行这些命令后,您应该会看到类似于此的内容,但您的文件路径可能会有所不同:"(pythonpy) C:\Users\ MyDjangoProject \

  2. 然后进入包含manage.py文件的项目文件夹。 (pythonpy) C:\Users\ MyDjangoProject \ #与上面相同的路径
  3. 然后简单地运行服务器:

    python manage.py runserver #这将为您提供指向本地主机的项目路径。将URL复制并粘贴到浏览器中即可正常工作。


3

请尝试(从命令行):

python3 manage.py runserver

如果我使用这个(没有 Python3):

python manage.py runserver

错误仍然存在。这种方法能够使您无需更改 manage.py 文件(因此您可以保留“from exc”)。

3
您只是忘记激活虚拟环境了,像这样操作即可:
source /home/adel/Dev/Python/DjangoProjects/myproject/venv/bin/activate

然后,您可以运行服务器:

python manage.py runserver

2
我也遇到过这个错误,但是通过先安装pipenv解决了它,
请尝试先运行以下命令:
pipenv shell django==2.1

那么,您应该能够运行。
python3 manage.py runserver

2

确保你正在从virtualenv运行应用程序,即如果你已经为你的项目创建了一个virtualenv,则首先激活venv。

me@debian:~/Desktop/webapp$source venv/bin/activate 
(venv) me@debian:~/Desktop/webapp$python manage.py runserver

1
我遇到了同样的问题,我觉得很奇怪,因为我已经激活了虚拟环境并设置了python3,但是当我使用这个语句“python manage.py runserver”时,我遇到了这个问题。我经常使用这个语句,但只有一次遇到这个问题,我重新启动了我的虚拟环境,然后它就运行了,希望你也能这样。

1
我遇到了同样的问题。
激活 venv 并运行 python manage.py runserver 不能正常工作。
我可以看到 venv 已经被激活,但它仍然不能正常工作。然后尝试了 python3 manage.py runserver,解决了 exc 问题,但现在它无法检测到我的安装库。
我破坏它的改变是重命名基本文件夹(与 OP 的基本文件夹位置不同的情况)。
但等等,这会对任何事情产生影响吗?
一个存储在 venv/bin/activate 中的完整路径到 venv 的变量现在不再有效。
解决方法:
1. 如果已经运行,请取消激活 venv。 2. 打开 venv/bin/activate。 3. 搜索 VIRTUAL_ENV 变量并根据新的文件夹更改进行重命名。 4. 激活 venv source venv/bin/activate 5. 运行 python manage.py runserver 完成,一切都恢复正常,我们现在可以愉快地享用柠檬水了。

1
发生的问题是使用了错误版本的Python,可能没有在您的虚拟环境中安装所有依赖项。当使用 sudo manage.py 时,我会遇到这个错误:使用 sudo 更改了所使用的Python版本为 /usr/bin/python
通过在使用 sudo 时指定要使用的Python版本来解决该问题:
sudo /path/to/my/env/bin/python manage.py makemigrations

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接