如何将虚拟环境添加到 VSCode Launch.json

问题描述

正如标题所暗示的,我正在使用 VSCode 调试器来启动 django 应用程序。我使用 python3 -m virtualenv venv 创建了虚拟环境,它显示在下面我想要的地方。我已经查看了 VSCode django 和调试教程,但并没有比我开始时更接近答案。

vscode ➜ /workspaces/docker-test-proj $ ls -l
total 0
drwxr-xr-x 8 vscode vscode 256 Apr  6 14:30 helloworld


vscode ➜ /workspaces/docker-test-proj/helloworld $ ls -l
total 136
drwxr-xr-x 11 vscode vscode    352 Apr  6 13:24 app
-rw-r--r--  1 vscode vscode 131072 Apr  6 13:42 db.sqlite3
drwxr-xr-x  8 vscode vscode    256 Apr  6 13:21 helloworld
-rwxr-xr-x  1 vscode vscode    666 Apr  6 13:19 manage.py
-rw-r--r--  1 vscode vscode    175 Apr  6 14:30 requirements.txt
drwxr-xr-x  6 vscode vscode    192 Apr  6 13:20 venv

在启动 VSCode 调试器时,我需要将 source venv/bin/activate 命令放在下面的 launch.json 文件中的什么位置才能使其运行?

{
    "version": "0.2.0","configurations": [
        {
            "name": "Python: Django","type": "python","request": "launch","program": "${workspaceFolder}/helloworld/manage.py","args": [
                "runserver",],"django": true
        },]
}

解决方法

您不需要将 activate 添加到 launch.json。您有 3 个选项(我更喜欢第一个选项):

  1. 提供虚拟环境中 python 的完整路径。这是我的启动配置之一。 python 入口指向虚拟环境中的 python 可执行映像。

        {
          "justMyCode": false,"name": "Ancient Warmth / Django-Oscar","type": "python","request": "launch","program": "${workspaceFolder}/manage.py","python": "${env:oscar}/bin/python","args": [
            "runserver","--noreload","0.0.0.0:8001",],"django": true
        },

    请注意,上面提到的是一个名为 oscar 的环境变量,它指向虚拟环境。我在 oscar 中定义 .bashrc 如下:

    export oscar=/var/work/django/oscar
    

    环境变量定义在哪里没有关系,只要在VSCode运行之前定义即可。

  2. 在 VSCode 窗口底部,靠近左侧,您会找到正在使用的 Python 环境的名称。

    一个。单击它,工作区列表从顶部下拉。

    B.选择要为其修改 Python 的工作区,然后您将看到 Python 解释器列表。你想要的可能没有显示出来,所以点击“我找不到我想要选择的解释器...”,然后点击“查找...”。

    c.导航到您的虚拟环境并点击 python

  3. 此选项是手动生成与选项 #2 相同的更改的方法。编辑项目目录中名为 .vscode/settings.json 的文件,并将 python.pythonPath 设置为指向虚拟环境中的 python 程序。这是我完整的 .vscode/settings.json 文件:

    {
      "python.linting.pylintEnabled": true,"python.linting.enabled": true,"python.pythonPath": "/var/work/django/oscar/bin/python"
    }