【问题标题】:How do i mark directory as source in vscode? Have tried all possible solutions nothing works如何在 vscode 中将目录标记为源?尝试了所有可能的解决方案,没有任何效果
【发布时间】:2021-08-26 10:47:17
【问题描述】:

我在vscode中有如下结构:

development
    .vscode
        |____settings.json
    src 
      extract
         |___extract.py 
      utils 
         |___ranking.py 
      build
         |__model.py 
      words.txt
      .env 

我希望运行 extract.py,但出现以下错误:

ModuleNotFoundError: No module named 'utils.ranking'

我的一些 extract.py 看起来像:

import utils.ranking as qr
f = open('../words.txt')

f = f.readlines()

这些是前几行。 ranking.py 包含一个函数排名

现在我知道这段代码就像在 pycharm 中一样工作。唯一的问题是我没有像在 pycharm 中那样将目录标记为源。所以我按照堆栈溢出的步骤并在 src 文件夹下创建了一个 .env 文件,它看起来像:

PYTHONPATH=./src 

然后我编辑 settings.json 使其看起来像:

{
    "python.pythonPath": "/conda/envs/test01/bin/python",
    "python.envFile": "${workspaceFolder}/.env"
}

然后当我运行 extract.py 时,我仍然得到同样的错误。这是什么原因造成的?我还可以做些什么。 vscode 新手!

【问题讨论】:

    标签: python visual-studio-code vscode-settings vscode-tasks


    【解决方案1】:

    你需要这样设置:

      "python.envFile": "${workspaceFolder}/.env",  //not need
      "terminal.integrated.env.windows": {
        "PYTHONPATH": "${workspaceFolder}/src"
      }
    

    您设置的设置,仅在调试模式下有效。你可以看看official docs

    PYTHONPATH 可以通过终端设置来设置 (terminal.integrated.env.*) 和/或在 .env 文件中

    使用终端设置时,PYTHONPATH 会影响任何工具 由用户在终端中运行,以及由用户执行的任何操作 扩展为通过终端这样路由的用户执行 作为调试。 然而,在这种情况下,当扩展程序正在执行时 未通过终端路由的操作,例如使用 linter 或格式化程序,则此设置不会影响 模块查找。

    当使用 .env 文件设置 PYTHONPATH 时,它将影响任何 扩展程序代表您执行调试器执行的操作, 但不会影响终端中运行的工具。

    如果需要,您可以使用这两种方法设置 PYTHONPATH。

    【讨论】:

    • 当我使用你的更新时,我应该删除 python.envFile 行吗?
    • @Maths12 这是默认设置,你可以修改到其他地方,如果你不想修改它,你可以删除它。
    • 嗨,它没有帮助,因为它没有检测到我创建的模块
    最近更新 更多