繁体   English   中英

如何设置 Visual Studio Code Python 扩展的根目录?

[英]How to set the root directory for Visual Studio Code Python Extension?

我使用 VSCode Python 扩展 ( ms-python.python ) 运行和调试我的项目没有问题,但是由于 python 子项目根目录不是整个项目目录,所以从我的源中导入的所有内容都带有红色下划线并列在problemsGo to definition和一些类似的功能无法正常工作。 我如何告诉 IDE 我的项目的起点在哪里:

Whole Project path:
  docs
  server
    entities
      user.py
      customer.py
  env
  viewer
  db

server目录是导入路径的起始位置:

from entities.user import User

您可以使用以下.env创建.env文件:

PYTHONPATH=server

这将根据需要将您的server文件夹添加到PYTHONPATH

(您可能需要重新启动 VSCode 才能正确考虑PYTHONPATH 。)


编辑以澄清...

在 repo 根目录下创建一个名为.env的文件,例如your_repo/.env

同样在您的消费代码所在的文件夹下创建文件,而不是在 repo root 下,似乎可以工作,例如your_repo/service/.env

有关更多详细信息,请参阅有关环境变量定义文件的文档

对我来说,这无需重新启动 VSC 即可工作,也许这是更新的 VSC 和扩展版本的问题。

如果你使用的是Pylance扩展,你可以通过python.analysis.extraPaths选项设置你的源文件夹。 默认情况下,它还查找常见的源文件夹名称,如src ,此选项称为python.analysis.autoSearchPaths

转到文件 > 首选项 > 设置,搜索 pythonpath。 在 Pylance 选项下,您应该看到Extra Paths ,这是您设置源文件夹的地方。

PYTHONPATH是一个环境变量,你可以设置它来添加额外的目录,python 将在其中查找模块和包。

如果需要为 Visual Studio Code 设置工作目录,

更好的方法是自定义Settings.jsonlaunch.json ,这样做:

// vi .vscode/Settings.json
{
    "python.pythonPath": "venv/bin/python",
}

use cwd to 指定调试器的当前工作目录,它是代码中使用的任何相对路径的基本文件夹。 如果省略,则默认为${workspaceFolder} (在 VS Code 中打开的文件夹)。

// vi .vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: your project name",
            "type": "python",
            "request": "launch",
            "cwd": "${workspaceRoot}/server",
        }
    ]
}

如果您希望服务器在没有任何 IDE 的情况下正常运行,只需在PYTHONPATH前面插入Root Drectory 假设有一个server/run.py

import sys
src_path = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, _src_path)   

参考: https : //code.visualstudio.com/docs/editor/debugging#_launch-versus-attach-configurations

参考: https : //code.visualstudio.com/docs/python/debugging#python-articles

参考: https : //docs.python.org/3/using/cmdline.html#envvar-PYTHONPATH

如上所述,设置 PYTHONPATH 使其工作。 我使用以下 .env 内容,以便它适用于任何项目:

PYTHONPATH=${PROJ_DIR}:${PYTHONPATH}

当您在运行/调试配置中选中“将内容根添加到 PYTHONPATH”时,这基本上就是 PyCharm 所做的。 这是一个有用的设置,但它破坏了您,因为您的代码在 PyCharm 之外失败。

或者,如果您在终端中运行,请先导出:

export PYTHONPATH=...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM