【问题标题】:Visual Studio Code Is Not Able To Launch Django Project From DebuggerVisual Studio Code 无法从调试器启动 Django 项目
【发布时间】:2019-04-24 14:36:02
【问题描述】:

我使用 Visual Studio Code 作为我的 IDE,用于使用 Python 的 Django Web 开发框架构建 Web 应用程序。我正在开发 2018 款 MacBook Pro。我可以通过在终端中使用以下方式启动我的 Web 应用程序:

python3 manage.py runserver

但是,我希望能够通过调试器启动我的应用程序。为了尝试执行此操作,我导航到调试部分,创建了 launch.json 文件,并将下拉菜单中的配置更改为 Python:Django。这是我在文件中的配置。

    {
        "name": "Python: Django",
        "type": "python",
        "request": "launch",
        "program": "${workspaceFolder}/manage.py",
        "console": "integratedTerminal",
        "args": [
            "runserver",
            "--noreload",
            "--nothreading"
        ],
        "django": true
    },

当我尝试使用绿色播放箭头运行调试器时,出现以下异常:

发生异常:ImportError 无法导入 Django。你是 确保它已安装并在您的 PYTHONPATH 环境中可用 多变的?您是否忘记激活虚拟环境?文件 "/用户/justinoconnor/桌面/Rapid Prototyping/Projects/hello_django/manage.py”,第 14 行,在 ) 来自 exc

使用此配置启动 VS Code 调试器应该与运行 python manage.py runserver --noreload --nothreading 相同,但它不起作用。我想这是因为在 MacBook 上我必须使用“python3”命令而不是“python”,但我在文档中没有看到任何允许我在 launch.json 配置文件中指定它的内容。

有谁知道如何解决这个问题,以便在我运行调试器时它会自动执行/保存我的项目?我不明白为什么当我可以在终端中键入 python3 manage.py runserver 并且它会执行得很好时,这不起作用。

【问题讨论】:

  • 在 VS Code 中尝试执行 Cmd + Shift + P 并编写“选择解释器”,您应该会看到一个名为“Python:选择解释器”的选项,选择它并等到您获得解释器列表.选择一个 python3 解释器,看看是否能解决问题。 (最好从您的虚拟环境中选择 python3 解释器)
  • 另外,当您运行调试器时,您可以在 VS Code 终端中看到启动项目时执行的实际命令,因此您可以看到使用了哪个 python 可执行文件。
  • 这就是我到目前为止所做的。我使用“终端:创建新的集成终端”启动终端,并使用“Python:选择解释器”为我的虚拟环境选择解释器,并在“./env”中选择“Python 3.7.1 64-Bit ('env':venv) /bin/python”。这在我编辑代码并在终端中键入“python3 manage.py runserver”时有效,但在我运行调试器时无效。谢谢!
  • Boregore,这是我在终端中得到的。 (env) US6749343-M001:hello_django justinoconnor$ cd "/Users/justinoconnor/Desktop/Rapid Prototyping/Projects/hello_django" ; env "PYTHONIOENCODING=UTF-8" "PYTHONUNBUFFERED=1" "/Users/justinoconnor/Desktop/Rapid Prototyping/Projects/hello_django/env/bin/python" /Users/justinoconnor/.vscode/extensions/ms-python.python- 2018.10.1/pythonFiles/experimental/ptvsd_launcher.py --client --host localhost --port 51054 "/Users/justinoconnor/Desktop/Rapid Prototyping/Projects/hello_django/manage.py" runserver --noreload --nothreading跨度>
  • 好的,看起来它使用了正确的 python 可执行文件。我在这里有点摸不着头脑,但请尝试以下操作:在终端(激活虚拟环境)中运行“python --version”(验证虚拟环境中安装的版本)和“pip freeze”(列出在虚拟环境中安装模块并验证 django 安装)。

标签: python django importerror


【解决方案1】:

即使在激活 venv(Python 虚拟环境)后启动 VS Code,我的 VS Code 环境也会出现同样的问题。

VS Code 还在状态栏上显示了 Python 环境选项“Python 3.7.3 64 位”。乍一看,这个 python 环境选项看起来是正确的。

但是,在应用 Boregore 的评论后,我的问题得到了解决。需要选择与venv python相关的Python Environment选项作为解释器。

通过应用以下步骤,我选择了与 venv 相关的正确 Python 环境选项(在我的情况下,即 ~/.virtualenvs/djangodev/bin/python),

  1. 通过打开命令面板 (Ctrl+Shift+P) 选择 Python 3 解释器。

  2. 开始输入 Python:选择解释器命令进行搜索,然后选择命令。如果可用,您还可以使用状态栏上的 Select Python Environment 选项(它也可能已经显示了选定的解释器)

  3. 选择显示 venv 路径的 Python 环境选项(在我的情况下,即 ~/.virtualenvs/djangodev/bin/python)

  4. 现在,VS Code 显示与 venv 相关的 Python Environment 选项,(在我的例子中,即“Python 3.7.3 64 bit ('djangodev': venv)”在 Status酒吧。

  5. 重新运行调试步骤。

(非常感谢 Boregore 提供的解决方案,这只是他对实际问题的评论的重新阐述)

【讨论】:

    【解决方案2】:

    在终端中使用命令virtualenv -p python3 venv(或将“venv”替换为您的虚拟环境名称)以在终端中使用“python”时默认使用python3创建虚拟环境(例如python manage.py ...)。

    -p 用于指定特定版本的python。

    【讨论】:

      【解决方案3】:

      问题是我在为我的项目创建虚拟环境时使用了“python”命令而不是“python3”命令。这导致调试器在尝试运行本地服务器时执行错误的命令。我能够使用命令创建一个新的虚拟环境 ...

      python3 -m venv env
      

      ...Visual Studio Code 调试器在使用“Python: Django”下拉配置进行调试时能够成功识别。

      【讨论】:

      • 我也发布了解决方案作为答案 - 你会这么好心并接受它吗? :-)
      • 我对堆栈溢出比较陌生。您的解决方案正在向我展示。我需要做些什么来“接受”你的答案,以便它显示给其他人吗?
      • 您只需要单击我答案左侧的复选标记按钮即可。这会将我的答案显示为“已接受的答案”。它还给了我一些声誉点(比如当我刚刚对你的问题投了赞成票时),这就是 stackoverflow 用户正在努力的目标。它使您的答案看起来更可信,而且您的声誉越高,您就越能访问更多功能。这是对您获得的帮助表示感谢的好方法 :-) 此外,当您对答案进行投票时,它会在投票较少的答案之前显示。
      猜你喜欢
      • 2016-12-23
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      相关资源
      最近更新 更多