【问题标题】:Set cwd in VS CODE在 VS CODE 中设置 cwd
【发布时间】:2021-04-10 20:18:27
【问题描述】:

VS 代码 1.52.1 Python 3.7.9

路径结构

  • 我的工作区
    • 文件夹主
      • MyWorkspace.code-workspace
      • MainModule.py
    • 文件夹 A
      • SubModule_A.py
    • 文件夹 B
      • SubModule_B.py

过去,我可以像下面这样轻松地在任何目录中的所有子模块中导入“MainModule.py”。

import MainModule

但是我重新安装 VS Code 后,他们无法在不同的路径中找到模块。我找到了一些使用绝对路径导入模块的解决方案,但是已经有数百个子模块很难全部修改。

我在下面尝试过,但没有任何效果。

  1. 修改 cwd

在“SubModule_a.py”中,

import os
os.chdir("C:\\work\\Folder Main")
import MainModule

这还是会出现ModuleNotFoundError

  1. 修改“MyWorkspace.code-workspace”

    “设置”:{

     "python.pythonPath": "C:\\anaconda3\\envs\\MyEnv\\python.exe", # for virtual env
     "python.linting.pylintEnabled": true,
     "python.linting.enabled": true,
     "terminal.integrated.cwd": "C:\\work\\Folder Main" # added this line
    

    }

简而言之,如何在不使用绝对路径的情况下从“SubModule_A.py”导入“MainModule.py”?

【问题讨论】:

    标签: python visual-studio-code import path


    【解决方案1】:

    要成功导入模块,有两种可选方式:

    1.在launch.json中添加如下代码:

    "env": {
        "PYTHONPATH":"${workspaceFolder}"
    },
    "cwd": "${workspaceFolder}"
    

    然后通过Run without Debugging(Ctrl+F5)运行。如果你点击右上角的绿色三角形按钮运行,它仍然会报错。

    2.追加当前路径:

    import sys
    sys.path.append('./')
    from FolderMain import MainModule
    

    当我们导入一个模块时,python解释器会搜索当前目录,安装的内置模块和第三方模块,搜索路径存储在sys.path./ 代表当前路径。

    无论您在没有调试的情况下运行它还是在终端中运行它,这两种方法都有效。

    【讨论】:

    • 我的问题是用你的第一个选项来解决。但是,“无法导入 'MainModule'”消息仍然是 linted,并且模块名称没有被引导。你也有解决这个问题的想法吗?
    • 你能贴出错误截图吗?导致不同的 linter 有不同的设置来解决它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2020-09-04
    • 2020-10-22
    • 2016-04-15
    相关资源
    最近更新 更多