【问题标题】:VS Code: Relative imports (linting)VS Code:相对导入(linting)
【发布时间】:2020-06-12 09:10:08
【问题描述】:

我有一个多目录项目。我对每个目录都使用绝对导入。例如,

主目录 | | - sub_dir1 | | - a.py(已经说A类) | - sub_dir2 | | - b.py(导入类 A。语法:从 subdir1.a 导入 A)

当我在终端中从 main_dir 运行它时,它工作正常。 但是,此导入在 VS 代码中为我提供了“未解析的导入 'differential_diagnosis.src.algorithm'Python(unresolved-import)”。我不知道如何解决这个问题。

因此,我面临的最大挑战是我无法使用 peek 功能查看 A 类的成员函数的作用。

我在 GitHub Project 上提出了类似的票证。

【问题讨论】:

  • 两件事。一、你在 VS Code 中打开了什么文件夹?是main_dir 还是您是否将包含main_dir 的文件夹作为您的工作区打开?二、Python扩展的正确repo是github.com/microsoft/vscode-python

标签: python visual-studio-code python-import


【解决方案1】:

尝试在你的python文件中添加这些代码:

import sys
print(sys.path)

解释器只能搜索这些路径来查找模块。 Python只会自动将包含当前python文件的文件夹添加到sys.path

'在sys.path 中找不到'sub_dir1' 的路径。您需要在 launch.json 文件中添加这些设置:

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

然后你的工作区路径将被添加到sys.path

如果 main_dir 是工作区文件夹,那么您可以将from subdir1.a import A 更改为from main_dir.subdir1.a import A

如果不是,则应改为from {workspaceName}.{folder}....main_dir.subdir1 import A,并在每个文件夹中添加__init__.py文件,将文件夹改为python包。

【讨论】:

    【解决方案2】:

    您应该放置一些您正在尝试做的事情的代码。我可以说的是 Python 在导入搜索路径中查找模块。首先它查找内置模块,Python 查找 sys.path 变量,该变量由原始脚本的目录 + PATH shell 变量 + 一些安装依赖的默认值初始化。

    见:https://docs.python.org/3/tutorial/modules.html

    为了保证可以找到您的导入,您可以这样做:

    sys.path.append(pathname_to_module)
    

    就在您导入模块之前。

    【讨论】:

    • 我认为它不起作用。 import sys sys.path.append("F:\dir1\dir2\dir3\src") print(sys.path) from knowledge_repository.src.age_distributions import ,*, \ ****, ****** * 有一个专有名称。我不确定是否允许我公开分享内容。如您所见,我打印了路径,并且正确添加了路径。
    猜你喜欢
    • 2021-05-31
    • 2021-07-14
    • 2020-03-23
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2021-11-20
    • 2021-02-18
    • 1970-01-01
    相关资源
    最近更新 更多