【问题标题】:Django manage.py runserver invalid syntaxDjango manage.py runserver 语法无效
【发布时间】:2018-06-01 12:20:00
【问题描述】:

我正在使用 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
  • 我已经用 manage.py 文件内容更新了问题
  • 我认为从您的 manage.py 文件中删除单词 from exc 将解决您的问题。试试看。
  • 为什么要更改生成的manage.py
  • 我多次收到此错误,此错误背后的原因是我的环境未激活,这可能也是您的原因。

标签: python django


【解决方案1】:

我遇到了同样的问题,但现在用这个 cmd 解决了:

python3 manage.py runserver

【讨论】:

  • 这是正确的解决方案。如果您在默认情况下同时拥有 python 2 和 python 3,则 /usr/bin 中的 python 指向 python 2. django 将会为 python 3 安装,因此会出现错误。 python3 manage.py runserver 与 exc 一起使用。感谢您的提示。
  • 只有在你同时安装了 python2 和 python3 的情况下这才是一个有效的解决方案,但即使你只有 python 2 发行版也可能会发生错误
【解决方案2】:

编辑您的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 文件中不需要它。

【讨论】:

  • 这可能会阻止“无效语法”错误,但它并不能解决真正的问题:您为 Python 3 安装了 Django,现在当您尝试使用 Python 2 运行它时出现错误。真正的解决方法是使用正确的 Python 版本。
【解决方案3】:
  1. 确保您的 virtualenv 已激活。假设你的 virtualenv 的名称是 pythonpy,然后运行这些命令:

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

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

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

【讨论】:

    【解决方案4】:

    你忘了激活虚拟环境,就这样吧:

    source /home/adel/Dev/Python/DjangoProjects/myproject/venv/bin/activate
    

    而且你可以运行服务器:

    python manage.py runserver
    

    【讨论】:

      【解决方案5】:

      尝试(从命令行):

      python3 manage.py runserver
      

      如果我改用这个(没有 python3):

      python manage.py runserver
      

      错误仍然存​​在。此方法使您不必更改 manage.py(因此您可以保留“from exc”)。

      【讨论】:

        【解决方案6】:

        我也遇到了这个错误,但是先安装 pipenv 解决了,

        先试试这个

        pipenv shell django==2.1
        

        那么你应该可以运行

        python3 manage.py runserver
        

        【讨论】:

          【解决方案7】:

          确保您从 virtualenv 运行应用程序,即如果您为项目创建了 virtualenv,则首先激活 venv。

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

          【讨论】:

            【解决方案8】:

            发生的情况是使用了错误版本的 python,它可能没有你的 virtualenv 中的所有依赖项。使用sudo manage.py 时出现此错误:使用sudo 将使用的python 版本更改为/usr/bin/python

            使用sudo时指定使用哪个版本的python解决了问题:

            sudo /path/to/my/env/bin/python manage.py makemigrations
            

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                【解决方案10】:

                Python 3.4.4Django 2.0 也有同样的问题。我尝试了最后一个解决方案,没有任何效果(无需删除:第 14 行的from exc)。

                只需运行您的服务器:

                python manage.py runserver
                

                代替:

                ./manage.py runserver #or '.\manage.py runserver' for Windows
                

                【讨论】:

                  【解决方案11】:

                  我这样跑没问题:

                  sudo ./**(your path)**/bin/python manage.py runserver
                  

                  【讨论】:

                    【解决方案12】:

                    我有同样的问题。我通过简单地指定python 版本来解决它,即输入python3 manage.py runserver 而不是python manage.py runserver

                    【讨论】:

                      【解决方案13】:

                      我重新安装了 v env

                      virtualenv venv --python=python3.7
                      

                      我安装了 django

                      成功了

                      【讨论】:

                      【解决方案14】:

                      我已经脱离了我的虚拟环境。

                      我重新跑了pipenv shell

                      【讨论】:

                        【解决方案15】:

                        首先在找到 Env 文件夹的命令行上执行此操作:

                        source Env/bin/activate
                        

                        然后现在导航到您的项目目录并执行:

                        python manage.py runserver
                        

                        有效!!

                        【讨论】:

                          【解决方案16】:

                          我也遇到了同样的问题。

                          激活的 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

                          多田,一切都恢复正常了,我们可以愉快地享用我们的柠檬水了。

                          【讨论】:

                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 2014-09-28
                            • 1970-01-01
                            • 1970-01-01
                            • 2016-01-13
                            • 1970-01-01
                            • 2017-05-05
                            相关资源
                            最近更新 更多